如果页面只显示静态html,有没有办法在django中没有视图模型的情况下呈现html页面?
另外,我可以重定向到html页面而不是网址吗?例如,而不是这样做:
return HttpResponseRedirect('form/success/')
我可以这样做:
return HttpResponseRedirect('success.html')
答案 0 :(得分:19)
您可以使用通用视图direct_to_template
呈现没有视图的模板。
重定向到success.html不是django的方法,因为success.html没有关联的URL。你总是必须通过一个视图将模板绑定到一个url(direct_to_template是一个从urls.py中的conf获取所有参数的视图,但它仍然是一个视图)
答案 1 :(得分:18)
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'),
]
答案 2 :(得分:15)
对于静态HTML,您可以使用Flatpages app。
您还可以提供呈现的模板(可能只包含静态HTML),但您需要一个视图:
from django.shortcuts import render_to_response
def some_view(request):
return render_to_response('sometemplate.html')
关于重定向,基本上你不能通过提供文件名重定向到HTML页面,即使它是由Web服务器静态提供的,你仍然会使用指向该文件的URL。
答案 3 :(得分:2)
我非常确定这不是OP想要做的事情,但如果有人想要在没有视图的情况下渲染某些内容(用于发送电子邮件或附加其他HTML代码),则可以使用此功能:
from django.template.loader import render_to_string
html = render_to_string('template.html', params)
答案 4 :(得分:1)
使用lambda函数。
urlpatterns = [
path('', lambda request: render(request, 'homepage.html'))
]