0
我想了解如何使用django-rest-framework。我正在關注教程和瀏覽API。我想要做的是使用TemplateHTMLRenderer來提供用各種語言翻譯的靜態HTML。不幸的是,我總是被重定向到登錄頁面或個人資料頁面。TemplateHTMLRenderer重定向到配置文件
例如一個簡單的服務條款。
在模板文件夾下
。
├──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。
對於REST_FRAMEWORK ['DEFAULT_PERMISSION_CLASSES'],您有任何設置嗎? –
不,我沒有任何關於REST_FRAMEWORK的設置。根本沒有配置,只是我將它添加到了INSTALLED_APPS中。 – voger
你在視圖中看到了print()的結果嗎?如果是這樣,你確定你的模板是否正確佈置,例如正確的塊名稱? –