为什么 django 无法相互识别 2 个路径转换器?
Why django can't recognize 2 path convertors from each other?
我有一个 Django 应用程序,我有 2 个 url 路径,只有最后一部分是路径转换器不同:
path('questions/<pk>', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>', views.QuestionListView.as_view(), name='questions_by_tag')
当我转到 127.0.0.1:8000/questions/1 没问题,它显示了正确的结果,但是当我转到 127.0.0.1:8000/questions/something(有些东西是 slug ) 它说找不到页面!(它必须使用 seconed url 路径但它没有!)
当我更改路径顺序时,它正确显示第二个,而另一个有问题!
有人可以帮我吗?
您没有为 <pk>
指定路径转换器,因此它将使用 <str:…>
path converter [Django-doc],而 <str:…>
是 超集 <slug:…>
,因此与 <slug:…>
匹配的所有内容也与 <str:…>
匹配,因此第二个模式永远不会触发。
您应该对整数使用 <int:…>
路径转换器,因此:
path('questions/<strong><int:</strong>pk<strong>></strong>/', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>/', views.QuestionListView.as_view(), name='questions_by_tag')
我有一个 Django 应用程序,我有 2 个 url 路径,只有最后一部分是路径转换器不同:
path('questions/<pk>', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>', views.QuestionListView.as_view(), name='questions_by_tag')
当我转到 127.0.0.1:8000/questions/1 没问题,它显示了正确的结果,但是当我转到 127.0.0.1:8000/questions/something(有些东西是 slug ) 它说找不到页面!(它必须使用 seconed url 路径但它没有!)
当我更改路径顺序时,它正确显示第二个,而另一个有问题! 有人可以帮我吗?
您没有为 <pk>
指定路径转换器,因此它将使用 <str:…>
path converter [Django-doc],而 <str:…>
是 超集 <slug:…>
,因此与 <slug:…>
匹配的所有内容也与 <str:…>
匹配,因此第二个模式永远不会触发。
您应该对整数使用 <int:…>
路径转换器,因此:
path('questions/<strong><int:</strong>pk<strong>></strong>/', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>/', views.QuestionListView.as_view(), name='questions_by_tag')