有没有办法在没有视图模型的情况下呈现html页面?

iJK*_*iJK 14 django

如果页面只显示静态html,有没有办法在django中没有视图模型的情况下呈现html页面?

另外,我可以重定向到HTML页面而不是网址吗?例如,而不是这样做:

return HttpResponseRedirect('form/success/')
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

return HttpResponseRedirect('success.html')
Run Code Online (Sandbox Code Playgroud)

Che*_*eng 21

direct_to_template在Django 1.8中不再有效.以下是如何在urls.py中的1.8中执行此操作:

from django.views.generic import TemplateView

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name="your_static.html"), name='whatever'),
]
Run Code Online (Sandbox Code Playgroud)


Gui*_*vin 19

您可以使用通用视图渲染没有视图的模板direct_to_template.

重定向到success.html不是django的方法,因为success.html没有关联的URL.您总是必须通过视图将模板绑定到URL(direct_to_template是一个视图,它从urls.py中的conf获取其所有参数,但它仍然是视图)

  • `direct_to_template`已被弃用; 对于1.5+,请参阅[此问题](http://stackoverflow.com/a/15117932/662761) (13认同)

Dav*_*cic 15

对于静态HTML,您可以使用Flatpages应用程序.

您还可以提供渲染模板(可能只包含静态HTML),但您需要一个视图:

from django.shortcuts import render_to_response
def some_view(request):
   return render_to_response('sometemplate.html')
Run Code Online (Sandbox Code Playgroud)

关于重定向,基本上你不能通过给出文件名重定向到HTML页面,即使它是由Web服务器静态提供的,你仍然会使用指向该文件的URL.


小智 7

我很确定这不是 OP 想要做的,但是如果有人想在没有视图的情况下渲染某些内容(用于发送电子邮件或附加到其他 html 代码),您可以使用:

from django.template.loader import render_to_string
html = render_to_string('template.html', params)
Run Code Online (Sandbox Code Playgroud)


小智 5

使用 lambda 函数。

urlpatterns = [
    path('', lambda request: render(request, 'homepage.html'))
]   
Run Code Online (Sandbox Code Playgroud)