Django: TemplateDoesNotExist (rest_framework/api.html)

В моей функции просмотра я хотел бы вернуть объект 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 в зависимости от запроса

Заранее спасибо

Ответ 1

Убедитесь, что у вас есть rest_framework в настройках INSTALLED_APPS

Ответ 2

Убедитесь, что вы установили pip install djangorestframework и включили rest_framework в setting.py

INSTALLED_APPS = [
    'rest_framework',
]

Ответ 3

Я ударил эту проблему при обновлении с старой версии 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. Работал для меня.

Ответ 4

Помимо добавления 'rest_framework' внутри вашего INSTALLED_APPS, попробуйте добавить следующее в свой TEMPLATES.OPTIONS:

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

Ответ 5

Я столкнулся с той же проблемой, я отправлял пустой ответ. Попробуйте добавить другую информацию в Response() в функции create_user чтобы проверить, работает ли она вообще

Ответ 6

Добавление этого декоратора выше этого представления @renderer_classes ([JSONRenderer])