2016-07-14 13 views
8

In meiner Ansicht Funktion möchte ich ein JSON-Objekt (Daten1) und etwas Text/HTML (Formular) zurückgeben. Ist das möglich?Django: TemplateDoesNotExist (rest_framework/api.html)

MY 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 nennen erhalte ich Statuscode 500 mit Fehler wie unten angezeigt

TemplateDoesNotExist rest_framework/api.html

wenn ich überprüfen, wie eine API, ich bekomme eine Antwort mit 200 OK Status. Dies zeigt Im nicht in der Lage zu meiner HTML-Seite

Wie soll ich meine HTML je nach Wunsch

Vielen Dank im Voraus

Antwort

16

Stellen Sie sicher, rest_framework in Ihren Einstellungen als INSTALLED_APPS

+0

Es ist bereits vorhanden. Ich glaube, dass @api_view mir nicht erlaubt, html page..Is gibt es eine andere Lösung – Coeus

+0

Sie möchten das überprüfen, indem Sie die django-Shell öffnen und die INSTALLED_APPS betrachten. Es ist unwahrscheinlich api_view, da ich es funktionierte und es einen HTTP 415 Nicht unterstützten Medientyp zurückgeben würde. – Linovia

+0

Diese Funktion funktioniert mit CURL-Befehl, ich bekomme auch Antwort, wenn ich versuche, HTML mit meinem Browser rendern, bekomme ich den oben aufgeführten Fehler – Coeus

0

Andere haben zu erhalten das Hinzufügen 'rest_framework' in Ihrem INSTALLED_APPS, versuchen Sie Folgendes in Ihrem TEMPLATES.OPTIONS:

'loaders': [ 
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader' 
], 
1

Ich habe dieses Problem beim Upgrade von einer alten Django-Version auf Django 2.0. Meine settings.py hat keine TEMPLATE Richtlinie überhaupt, so verhakt ich folgende von einem neuen django-admin.py startproject ... Laufe:

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', 
      ], 
     }, 
    }, 
] 

, dass in Ihrem settings.py wenn Sie nicht TEMPLATES Richtlinie haben in Ihrem settings.py. Arbeitete für mich.