我尝试在基于类的视图中使用类似polls:detail
的内容,例如:
class QuestionDetail(DetailView):
template_name = '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本身发生变化,其余的代码仍然有效,这就是我正在尝试做的事情。
答案 0 :(得分:1)
您可以使用以下URL的名称: django.urls.reverse('polls:detail',args = [object.id])
您还必须更改template_name设置,并在当前模板文件夹中创建模板detail.html。
template_name ='polls / detail.html'
答案 1 :(得分:1)
网址名称和模板名称是非常绝对的东西。
template_name
是.html
文件的路径。
您可以使用name
<{1}}参数来使用django.urls.reverse