Dans ma fonction de vue, je voudrais renvoyer un objet JSON (data1) et du texte/html (formulaire). Est-ce possible?
Mon 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')
Lorsque j'appelle l'URL, le code d'état 500 avec l'erreur s'affiche, comme indiqué ci-dessous
TemplateDoesNotExist rest_framework/api.html
quand je vérifie en tant qu'API, j'obtiens une réponse avec 200 statut ok. Cela montre que je suis incapable d'obtenir ma page html
Comment dois-je obtenir mon code HTML en fonction de la demande
Merci d'avance
Assurez-vous que vous avez rest_framework
dans le INSTALLED_APPS
de vos paramètres.
J'ai rencontré ce problème lors de la mise à niveau d'une ancienne version de Django vers Django 2.0. Mon settings.py
n'avait pas du tout de directive TEMPLATE
, alors j'ai collé ce qui suit dans une nouvelle exécution de Django-admin.py startproject ...
:
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',
],
},
},
]
Ajoutez cela à votre settings.py
si vous n'avez pas de directive TEMPLATES
dans votre settings.py
. Travaillé pour moi.
Outre l'ajout de 'rest_framework'
dans votre INSTALLED_APPS
, essayez d'ajouter ce qui suit dans votre TEMPLATES.OPTIONS
:
'loaders': [
'Django.template.loaders.filesystem.Loader',
'Django.template.loaders.app_directories.Loader'
],