如果頁面只顯示靜態html,有沒有辦法在django中呈現沒有視圖模型的html頁面?有沒有辦法呈現一個沒有視圖模型的HTML頁面?
此外,我可以重定向到一個HTML頁面,而不是一個網址?例如,而不是這樣做:
return HttpResponseRedirect('form/success/')
我可以這樣做:
return HttpResponseRedirect('success.html')
?
如果頁面只顯示靜態html,有沒有辦法在django中呈現沒有視圖模型的html頁面?有沒有辦法呈現一個沒有視圖模型的HTML頁面?
此外,我可以重定向到一個HTML頁面,而不是一個網址?例如,而不是這樣做:
return HttpResponseRedirect('form/success/')
我可以這樣做:
return HttpResponseRedirect('success.html')
?
對於靜態HTML,您可以使用Flatpages app。
你也可以成爲渲染的模板(可能只包含靜態HTML),但你需要一個觀點:
from django.shortcuts import render_to_response
def some_view(request):
return render_to_response('sometemplate.html')
關於重定向,基本上你不能只給文件名重定向到HTML頁面,即使它是由Web服務器靜態提供的,您仍將使用指向該文件的URL。
您可以使用通用視圖direct_to_template
呈現不帶視圖的模板。
因爲success.html沒有關聯的URL,所以重定向到success.html並不是django的方法。你總是必須通過視圖將模板綁定到url(direct_to_template是一個視圖,它從urls.py中獲取conf的所有參數,但它仍然是一個視圖)
direct_to_template不再適用於Django 1.8。這裏是如何做到這一點的1.8,在urls.py:
from django.views.generic import TemplateView
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name="your_static.html"), name='whatever'),
]
適用於1.8及更高版本。 – shadow0359 2016-12-05 11:14:53
我們需要爲每個靜態HTML做到這一點嗎? – Anupam 2017-01-27 10:22:35
@AnupamJain是的, – Cheng 2017-01-28 14:04:29
我敢肯定這不是OP想做的事,但如果有人想呈現的東西,不設窗戶, (用於發送電子郵件或附加到其他html代碼),您可以使用:
from django.template.loader import render_to_string
html = render_to_string('template.html', params)
'direct_to_template'已被棄用;請參閱[此問題](http://stackoverflow.com/a/15117932/662761)for 1.5+ – Jack 2013-12-12 02:01:03
該鏈接現在也被破壞。 – 2017-03-02 18:31:50