如果页面只显示静态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