Django: 模板不存在 (rest_framework/api.html)

164

在我的视图功能中,我想返回一个json对象(data1)和一些文本/HTML(form)。这可行吗?

我的代码

@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 ok状态的响应。这表明我无法获取我的HTML页面。

根据请求,我应该如何获取我的HTML页面?

15个回答

2
除了在 INSTALLED_APPS 中添加 'rest_framework',尝试在 TEMPLATES.OPTIONS 中添加以下内容:
'loaders': [
     'django.template.loaders.filesystem.Loader',
     'django.template.loaders.app_directories.Loader'
],

1

在那个视图上方添加这个装饰器 @renderer_classes([JSONRenderer])


1

使用以下代码替代HttpResponse:

from rest_framework.response import Response

return Response(data=message, status=status.HTTP_200_OK)

0
在已安装的应用程序中,如果您在项目中使用了rest_framework,请在setting.py文件中添加rest_framework
INSTALLED_APPS = [
    'rest_framework',]

-1

我遇到了同样的问题,我正在发送一个空响应。尝试在create_user函数中将不同的信息放入Response()中,以检查是否起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接