TemplateHTMLRenderer重定向到个人资料

时间:2015-09-15 21:01:02

标签: django django-rest-framework

我正在尝试学习如何使用django-rest-framework。我正在按照教程加上浏览API。我想要做的是使用TemplateHTMLRenderer来提供以各种语言翻译的静态HTML。不幸的是,我总是被重定向到登录页面或个人资料页面。

例如简单的服务条款。

在模板文件夹


├──base.html
├──el
│└──TOS.html
└──恩
    └──TOS.html

视图

# returns the Terms of Service. For now hard coded to return en
class TOSView(APIView):
    renderer_classes = (TemplateHTMLRenderer,)

    def get(self, request, *args, **kwargs):
        print(request)
        return Response({}, template_name='TOS/en/TOS.html')

和网址

url(r'^site/tos/(?P<lang>[a-z]{2})/$', TOSView.as_view(), name='TOSView'),

当我点击我的网址时

[voger]$ http http://127.0.0.1:8000/site/tos/en/HTTP/1.0 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: text/html; charset=utf-8
Date: Tue, 15 Sep 2015 20:32:34 GMT
Server: WSGIServer/0.2 CPython/3.4.3
Vary: Cookie
X-Frame-Options: SAMEORIGIN

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <div>
      <strong>Menu:</strong>
      <ul>
    <li><a href="/accounts/login/">Sign In</a></li>
    <li><a href="/accounts/signup/">Sign Up</a></li>
      </ul>
    </div>
  </body>
</html>

我还尝试从RetrieveAPIView继承TOSView,但仍然是相同的。

我也尝试过基于功能的视图

@api_view(('GET',))
@renderer_classes((TemplateHTMLRenderer,))
def tos_view(request, lang):
    return Response({}, template_name='TOS/en/TOS.html')

仍然没有快乐。

我不知道它是否相关,但我也安装了django-allauth。

1 个答案:

答案 0 :(得分:1)

确保您的模板设置正确,包括将所有内容放在正确的{% block %}标记中。看起来您的基本模板可能正在输出,当前块中没有内容。