路径('<用户名>')导致所有URL映射到错误的视图

时间:2019-05-12 15:50:10

标签: python django django-views

我有一个名为chat的Django应用,其根urls.py看起来像这样

path('messages/', include('chat.urls')),

但是下面的网址在聊天应用urls.py中引起了问题

re_path(r"^(?P<username>[\w.@+-]+)", login_required(chat_views.ThreadView.as_view()), name='thread'),

正在发生的事情是不存在抛出404的问题 转到诸如

的组合网址时出错
localhost/messages/blahblah/02

相反,它会抛出

NOT NULL constraint failed: chat_thread.second_id

因为假设blahblah/02是用户名,并且将其映射到ThreadView,而用户名却无法从2个用户那里获取thread对象。

因此,从本质上讲,我尝试在chat应用中创建的任何其他URL模式均无法正确路由。 (示例我尝试创建一个NotificationListView,但是由于将messages/notifications路由到ThreadView而无法访问它)

如何阻止这种情况发生?

0 个答案:

没有答案