2015-09-15 63 views
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。

+0

對於REST_FRAMEWORK ['DEFAULT_PERMISSION_CLASSES'],您有任何設置嗎? –

+0

不,我沒有任何關於REST_FRAMEWORK的設置。根本沒有配置,只是我將它添加到了INSTALLED_APPS中。 – voger

+0

你在視圖中看到了print()的結果嗎?如果是這樣,你確定你的模板是否正確佈置,例如正確的塊名稱? –

回答

1

確保您的模板設置正確,包括將所有內容都放在正確的{% block %}標記中。看起來您的基本模板可能正在輸出,而當前塊中沒有內容。