2016-07-14 42 views
8

Görünümümde json nesnesi (data1) ve bazı metin/html (form) döndürmek istiyorum. Mümkün mü? Ben url çağırdığınızda ben kontrol ederkenDjango: TemplateDoesNotExist (rest_framework/api.html)

TemplateDoesNotExist rest_framework/api.html

aşağıda gösterildiği gibi

MY kod

@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') 

Ben hata ile durum kodu 500 olsun API, 200 ok durumuyla yanıt alıyorum. Bu

nasıl

cevap

16

sen rest_framework olduğundan emin olun istek üzerine önceden

Teşekkür bağlı benim html almalısınız benim html sayfası almak için Im yapamaz gösterir ayarlarınız en INSTALLED_APPS

+0

Zaten mevcut. @api_view'in html sayfası oluşturmama izin vermediğine inanıyorum .. Başka bir çözüm var – Coeus

+0

Bunu django kabuğunu açıp INSTALLED_APPS'ye bakarak kontrol etmek istediğinizi iki kez kontrol etmek istersiniz. Çalıştığımdan bu yana api_view olasılığı düşük ve bir HTTP 415 Desteklenmeyen Ortam Türü döndürecekti. – Linovia

+0

bu işlev CURL komutu ile çalışır, ayrıca tarayıcımla html oluşturmaya çalıştığımda yanıt alırım, yukarıda listelenen hatayı alıyorum – Coeus

0

Diğer 'rest_framework' eklemekten daha INSTALLED_APPS içinde, TEMPLATES.OPTIONS:

'loaders': [ 
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader' 
], 
içinde aşağıdakileri eklemeyi deneyin.
1

Eski Django sürümünden Django 2.0'a yükseltirken bu soruna dikkat çektim. Benim settings.py hiç bir TEMPLATE direktifi yoktu, bu yüzden yeni bir django-admin.py startproject ... vadede aşağıdaki budaklı: Eğer settings.py yılında TEMPLATES direktifi yoksa

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

senin settings.py o ekleyin. Benim için çalıştı.