我正在尝试学习如何使用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。
答案 0 :(得分:1)
确保您的模板设置正确,包括将所有内容放在正确的{% block %}
标记中。看起来您的基本模板可能正在输出,当前块中没有内容。