django 通用 DetailView
django generic DetailView
django 的新手,非常喜欢做事的简单性。但是在呈现通用 DetailView 时出现问题,因为我收到 405 错误说明方法不受支持。下面是我的代码。
from django.shortcuts import render, get_object_or_404, get_list_or_404
from django.views.generic import View, ListView, DetailView
from store.managers import StoreManager
from .models import Store
# Create your views here.
class StoreDetails(DetailView):
model = Store
template_name = 'store/details.html'
class StoreIndex(ListView):
model = Store
template_name = 'store/index.html'
context_object_name = 'stores'
# url
urlpatterns = [
url(r'^view/([0-9]+)/$', StoreDetails.as_view(), name='details'),
url(r'^index/$', StoreIndex.as_view(), name='index'),
]
虽然我的 StoreIndex 视图运行良好,但我的 StoreDetails 视图出现错误。尝试覆盖 get_context_data 函数但结果相同。
问题出在 url 模式中。 DetailView
需要主键来找到正确的对象来显示,但是模式 r'^view/([0-9]+)/$'
没有指定匹配的数字应该作为主键。试试 r'^view/(?P<pk>[0-9]+)/$'
(pk
代表主键)。
另请参阅 DetailView doocs 中的示例(它提供 slug
而不是 pk
)。 pk
和 slug
不需要自定义 get_context_data
。
django 的新手,非常喜欢做事的简单性。但是在呈现通用 DetailView 时出现问题,因为我收到 405 错误说明方法不受支持。下面是我的代码。
from django.shortcuts import render, get_object_or_404, get_list_or_404
from django.views.generic import View, ListView, DetailView
from store.managers import StoreManager
from .models import Store
# Create your views here.
class StoreDetails(DetailView):
model = Store
template_name = 'store/details.html'
class StoreIndex(ListView):
model = Store
template_name = 'store/index.html'
context_object_name = 'stores'
# url
urlpatterns = [
url(r'^view/([0-9]+)/$', StoreDetails.as_view(), name='details'),
url(r'^index/$', StoreIndex.as_view(), name='index'),
]
虽然我的 StoreIndex 视图运行良好,但我的 StoreDetails 视图出现错误。尝试覆盖 get_context_data 函数但结果相同。
问题出在 url 模式中。 DetailView
需要主键来找到正确的对象来显示,但是模式 r'^view/([0-9]+)/$'
没有指定匹配的数字应该作为主键。试试 r'^view/(?P<pk>[0-9]+)/$'
(pk
代表主键)。
另请参阅 DetailView doocs 中的示例(它提供 slug
而不是 pk
)。 pk
和 slug
不需要自定义 get_context_data
。