Django:基于 Class 的视图,URL 和 template_name
Django: Class-based views, URL and template_name
我正在尝试在基于 class 的视图中使用类似 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'),
]
我想主要的问题是,如何在基于 class 的视图中使用 URL 的名称,而不是显式提供模板名称,例如 polls/question_results.html
?
除了template_name
还有什么吗?
我读到在 URLS 中使用名称是一种很好的做法,因此万一 URL 本身发生变化,其余代码仍然有效,所以这就是我正在尝试的去做。
您可以像这样使用 URL 的名称:
django.urls.reverse('polls:detail', args=[object.id])
并且您还必须更改 template_name 设置并在当前模板文件夹中创建模板 detail.html。
template_name = 'polls/detail.html'
Url 名称和模板名称是非常绝对的东西。
template_name
是 .html
文件的路径。
Url 的 name
参数,您可以使用 django.urls.reverse
从名称中反转 url
我正在尝试在基于 class 的视图中使用类似 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'),
]
我想主要的问题是,如何在基于 class 的视图中使用 URL 的名称,而不是显式提供模板名称,例如 polls/question_results.html
?
除了template_name
还有什么吗?
我读到在 URLS 中使用名称是一种很好的做法,因此万一 URL 本身发生变化,其余代码仍然有效,所以这就是我正在尝试的去做。
您可以像这样使用 URL 的名称: django.urls.reverse('polls:detail', args=[object.id])
并且您还必须更改 template_name 设置并在当前模板文件夹中创建模板 detail.html。
template_name = 'polls/detail.html'
Url 名称和模板名称是非常绝对的东西。
template_name
是 .html
文件的路径。
Url 的 name
参数,您可以使用 django.urls.reverse