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
- 对于
ListView
:movie_list.html
- 对于
DetailView
:movie_detail.html
- 对于
DeleteView
:movie_confirm_delete.html
- 对于
CreateView
和UpdateView
:movie_form.html
如您所见,它以小写形式获取模型名称,并在下划线后添加视图类型。您可以通过运行没有模板的应用程序来进行实验,然后它会引发DoesNotExist
错误,说如果你还没有在模板文件夹中找到它就找不到movie_list.html
。对于所有CBV,你会看到html django想要的名字。
另一答案
默认情况下,Django使用您的模型名称和一些template_name
生成suffix/prefix。
例如,对于ListView
,template_name
在MultipleObjectTemplateResponseMixin对象中生成。在你的情况下:
MovieList
:movie_list.html
MovieDetail
:movie_detail.html
以上是关于Django视图如何决定渲染/显示哪个html页面?的主要内容,如果未能解决你的问题,请参考以下文章