Django视图如何决定渲染/显示哪个html页面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django视图如何决定渲染/显示哪个html页面?相关的知识,希望对你有一定的参考价值。

在我的视图中我没有提到template_name那么django将如何决定在请求期间呈现哪个html页面?

这是我的views.py:

from django.shortcuts import render


from django.views.generic import ListView, DetailView
from . models import Movie

class MovieList(ListView):
    model = Movie

   # template_name = 'movie_list.html'
class MovieDetail(DetailView):
    model = Movie
    #template_name = 'movie_detail.html'

如代码所示,我没有提到任何template_name那么django如何知道页面位置?

当我使用网址“http://localhost:8000/movies/”时,它显示的是MovieList.html

答案
from django.shortcuts import render


from django.views.generic import ListView, DetailView
from . models import Movie

class MovieList(ListView):
    model = Movie

   # template_name = 'movie_list.html'
class MovieDetail(DetailView):
    model = Movie
    #template_name = 'movie_detail.html'

举个例子 -

示例:型号名称为Movie

  • 对于ListViewmovie_list.html
  • 对于DetailViewmovie_detail.html
  • 对于DeleteViewmovie_confirm_delete.html
  • 对于CreateViewUpdateViewmovie_form.html

如您所见,它以小写形式获取模型名称,并在下划线后添加视图类型。您可以通过运行没有模板的应用程序来进行实验,然后它会引发DoesNotExist错误,说如果你还没有在模板文件夹中找到它就找不到movie_list.html。对于所有CBV,你会看到html django想要的名字。

另一答案

默认情况下,Django使用您的模型名称和一些template_name生成suffix/prefix

例如,对于ListViewtemplate_nameMultipleObjectTemplateResponseMixin对象中生成。在你的情况下:

  • MovieListmovie_list.html
  • MovieDetailmovie_detail.html

以上是关于Django视图如何决定渲染/显示哪个html页面?的主要内容,如果未能解决你的问题,请参考以下文章

Django - 如何渲染 html 并同时返回一个 json

Django 多模板渲染

django表单提交后如何用弹框提示成功?

07-Django模板

如何从视图中呈现特定的 Django 管理页面?

Rails 如何转义和显示渲染视图的内容