In meiner Ansichtsfunktion möchte ich ein Json-Objekt (data1) und etwas Text/HTML (Formular) zurückgeben. Ist das möglich?
MEIN Code
@api_view(['POST'])
@permission_classes((AllowAny,))
def create_user(request):
if request.is_ajax():
if request.method == 'POST':
serializer = SignupSerializer(data=request.data)
print 'ser'
print serializer
if not serializer.is_valid():
return Response(serializer.errors,\
status=status.HTTP_400_BAD_REQUEST)
else:
serializer.save()
data={'status': 'Created','message': 'Verification email has been sent to your email. Please verify your account.'}
return Response(data, template_name='register.html')
else:
return HttpResponse('hello world')
Wenn ich die URL anrufe, erhalte ich den Statuscode 500 mit dem folgenden Fehler
TemplateDoesNotExist rest_framework/api.html
wenn ich als API überprüfe, erhalte ich eine Antwort mit dem Status 200 OK. Dies zeigt, dass ich meine HTML-Seite nicht abrufen kann
Wie bekomme ich meine HTML je nach Anfrage?
Danke im Voraus
Stellen Sie sicher, dass Sie rest_framework
in den Einstellungen INSTALLED_APPS
Ihrer Einstellungen haben.
Stellen Sie sicher, dass Sie pip install djangorestframework
Installieren und rest_framework in die setting.py einfügen
INSTALLED_APPS = [
'rest_framework',
]
Ich habe dieses Problem beim Upgrade von einer alten Django-Version auf Django 2.0 festgestellt. Mein settings.py
hatte überhaupt keine TEMPLATE
-Direktive, daher habe ich folgendes von einem neuen Django-admin.py startproject ...
-Lauf mitgenommen:
TEMPLATES = [
{
'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'Django.template.context_processors.debug',
'Django.template.context_processors.request',
'Django.contrib.auth.context_processors.auth',
'Django.contrib.messages.context_processors.messages',
],
},
},
]
Fügen Sie dies Ihrem settings.py
hinzu, wenn Sie keine TEMPLATES
-Direktive in Ihrem settings.py
haben. Arbeitete für mich.
Wenn Sie nicht 'rest_framework'
in Ihrem INSTALLED_APPS
hinzufügen, fügen Sie Folgendes in Ihren TEMPLATES.OPTIONS
ein:
'loaders': [
'Django.template.loaders.filesystem.Loader',
'Django.template.loaders.app_directories.Loader'
],
Ich bin auf dasselbe Problem gestoßen, ich habe eine leere Antwort gesendet. Versuchen Sie, eine andere Information in die Funktion Response()
in create_user
Einzufügen, um zu überprüfen, ob sie überhaupt funktioniert