Ответ 1
Убедитесь, что у вас есть rest_framework
в настройках INSTALLED_APPS
В моей функции просмотра я хотел бы вернуть объект json (data1) и некоторый текст /html (form). Возможно ли это?
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')
Когда я вызываю url, я получаю код состояния 500 с ошибкой, как показано ниже
TemplateDoesNotExist rest_framework/api.html
когда я проверяю API, я получаю ответ с 200 нормальным статусом. Это показывает, что Im не удалось получить мою страницу html
Как мне получить мой html в зависимости от запроса
Заранее спасибо
Убедитесь, что у вас есть rest_framework
в настройках INSTALLED_APPS
Убедитесь, что вы установили pip install djangorestframework
и включили rest_framework в setting.py
INSTALLED_APPS = [
'rest_framework',
]
Я ударил эту проблему при обновлении с старой версии Django до Django 2.0. Мой settings.py
вообще не имел директивы TEMPLATE
, поэтому я зацепил следующее из нового прогона 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',
],
},
},
]
Добавьте это к вашему settings.py
, если у вас нет директивы TEMPLATES
в settings.py
. Работал для меня.
Помимо добавления 'rest_framework'
внутри вашего INSTALLED_APPS
, попробуйте добавить следующее в свой TEMPLATES.OPTIONS
:
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader'
],
Я столкнулся с той же проблемой, я отправлял пустой ответ. Попробуйте добавить другую информацию в Response()
в функции create_user
чтобы проверить, работает ли она вообще
Добавление этого декоратора выше этого представления @renderer_classes ([JSONRenderer])