[英]Django: Class-based views, URL and template_name
我试图在基于类的视图中使用诸如polls:detail
类的东西,例如:
class QuestionDetail(DetailView):
template_name = 'polls:result'
但是,我TemplateDoesNotExist at /polls/2/result polls:result
得到了TemplateDoesNotExist at /polls/2/result polls:result
错误...
urls.py是:
from django.conf.urls import url
from polls.views import IndexView, DetailView, ResultsView
from . import views
app_name = 'polls'
urlpatterns = [
url(r'^$', IndexView.as_view(), name='index'),
url(r'^(?P<pk>\d+)/$', DetailView.as_view(), name='detail'),
url(r'^(?P<pk>\d+)/result$', ResultsView.as_view(), name='result'),
url(r'^(?P<pk>\d+)/vote$', views.vote, name='vote'),
]
我想主要的问题是,如何在基于类的视图中使用URL名称,而不是显式提供模板名称(如polls/question_results.html
?
除了template_name
之外,还有什么吗?
我读到,在URL中使用名称是一种很好的做法,因此,如果URL本身发生更改,其余代码仍然有效,所以这就是我要尝试的方法。
您可以这样使用URL名称:django.urls.reverse('polls:detail',args = [object.id])
而且,您还必须更改template_name设置,并在当前模板文件夹中创建一个模板detail.html。
template_name ='polls / detail.html'
网址名称和模板名称绝对是绝对的东西。
template_name
是.html
文件的路径。
您可以使用url的name
参数使用django.urls.reverse
从名称反向url
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.