webentwicklung-frage-antwort-db.com.de

Django: TemplateDoesNotExist (rest_framework/api.html)

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

17
Coeus

Stellen Sie sicher, dass Sie rest_framework in den Einstellungen INSTALLED_APPS Ihrer Einstellungen haben.

48
Linovia

Stellen Sie sicher, dass Sie pip install djangorestframework Installieren und rest_framework in die setting.py einfügen

INSTALLED_APPS = [
    'rest_framework',
]
8
sarath kumar

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.

7
Ross Rogers

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'
],
1
Juwaini

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

0