Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何在gereric DetailView中使用自定义slug(必须使用对象pk或slug调用通用详细视图DetailView)_Python_Django_Generics - Fatal编程技术网

Python Django:如何在gereric DetailView中使用自定义slug(必须使用对象pk或slug调用通用详细视图DetailView)

Python Django:如何在gereric DetailView中使用自定义slug(必须使用对象pk或slug调用通用详细视图DetailView),python,django,generics,Python,Django,Generics,我是python django的新手。在执行以下操作时,我在使用详细信息视图时遇到问题。实际上这是我关于StackOverflow的第一个问题,所以如果我有什么错误,请告诉我。非常感谢 我想要什么? 我认为url(r'^(?P\d+/$),views.DetailView.as_view(),name=“detail”)比url(r'^(?P\d+/$),views.DetailView.as_view(),name=“detail”)好。因为它更具可读性和直观性 因此,我不想更改轮询/url

我是python django的新手。在执行以下操作时,我在使用
详细信息视图时遇到问题
。实际上这是我关于StackOverflow的第一个问题,所以如果我有什么错误,请告诉我。非常感谢

我想要什么?
  • 我认为
    url(r'^(?P\d+/$),views.DetailView.as_view(),name=“detail”)
    url(r'^(?P\d+/$),views.DetailView.as_view(),name=“detail”)
    好。因为它更具可读性和直观性
  • 因此,我不想更改
    轮询/url.py
  • 如何使用详细视图,但仍保持在视图上
源代码
django_项目/polls/url.py
(当前不工作)

django_项目/polls/views.py

class DetailView(generic.DetailView):
  model = Question
  template_name = "polls/detail.html"
错误消息 必须使用对象主键或slug调用通用详细视图DetailView。

DetailView通用视图希望从URL捕获的主键值被称为“pk”,因此我们将通用视图的poll_id更改为pk

所以这显然是行不通的:

url(r'^(?P<question_id>\d+)/$', views.DetailView.as_view(), name="detail"),
pk
是django中的标准术语;虽然这可能会使您的代码更具可读性,
任何熟悉django的人都可能认为
pk
更具可读性。如果您想自定义所有的小细节,那么使用
通用
视图有什么意义?

我找到了一个解决方案。当我添加
pk\u url\u kwarg=“question\u id”
时,它会起作用!!!(来自)
class DetailView(generic.DetailView):
  model = Question
  template_name = "polls/detail.html"
url(r'^(?P<question_id>\d+)/$', views.DetailView.as_view(), name="detail"),
url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name="detail"),
class MyCustomDetailView(DetailView):
    pk_url_kwarg = 'object_id'