django generic DetailView

时间:2015-12-26 22:47:49

标签: django 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函数但结果相同。

1 个答案:

答案 0 :(得分:1)

问题出在url模式中。 DetailView需要主键才能找到要显示的正确对象,但模式r'^view/([0-9]+)/$'未指定匹配的数字应该用作主键。尝试r'^view/(?P<pk>[0-9]+)/$'pk代表主键)。

另请参阅DetailView doocs上的示例(提供slug而不是pk)。自定义get_context_data不应该是pkslug