我有一个django应用程序,我有两个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/问题/1时,它可以显示正确的结果,但当我转到127.0.0.1:8000/问题/something(something is slug)时,它会显示页面未找到!(它必须使用第二个url路径,但不能使用!)

当我改变路径顺序时,它会正确显示第二条路径,而另一条路径是个问题!

推荐答案

您没有为<pk>指定路径转换器,因此它将使用<str:…> path converter [Django-doc],而<str:…><slug:…>中的superset,因此与<slug:…>匹配的所有内容也将与<str:…>匹配,因此第二个模式将永远不会触发.

对于整数,您应该使用<int:…>路径转换器,因此:

path('questions/<int:pk>/', views.QuestionDetailView.as_view(), name='question_detail'),
path('questions/<slug:tag_slug>/', views.QuestionListView.as_view(), name='questions_by_tag')

Django相关问答推荐

在保存新实例之前删除一个实例(Django模型保存方法)

Django-将html数据保存到quillfield中

APIView查询未返回任何结果

如何在Django CMS中更新上下文

Django-admin 显示decorator 按多列排序

如何保护单个数据库行/模型实例?

Django如何在没有ctrl点击的情况下允许多选

如何使用邮箱确认码创建django注册

如何在没有此前缀的情况下修复此 django 路径?

基于模型多选字段在模板django中显示结果

如何使用 matplotlib 在绘图的角落插入小图像?

如何在 django 中生成 url

我的 django 模型 DateField 如何将 30 天添加到提供的值?

CSS 文件中的 Django 媒体 URL

这是验证 Django 模型字段的方法吗?

无效的块标签: static

在 Django 开发服务器中关闭静态文件的缓存

Django:验证上传文件的文件类型

AWS Cognito 作为网站的 Django 身份验证后端

如何获取 pytz 时区的通用名称