Django 排除 url 模式

Posted

技术标签:

【中文标题】Django 排除 url 模式【英文标题】:Django exclude url pattern 【发布时间】:2021-12-25 06:44:26 【问题描述】:

我有一个基本的 django 应用程序,并希望从匹配具有相似结构的其他路由中排除路由 下面是我的urls.py

from django.urls import path
from . import views

app_name = 'blogs'

urlpatterns = [
    path('', views.index, name = 'index'),
    path('create', views.create, name = 'create'),
    path('<str:handle>', views.show, name = 'blogs'),
]

我希望path('create'), views.create, name = 'create') 进入创建博客页面,path('&lt;str:handle&gt;', views.show, name = 'blogs'), 进入博客的详细信息页面。

当我导航到 http://localhost:8000/blogs/create 时,我收到 404 找不到博客错误

如何将create 排除在与博客详细信息页面的&lt;str:handle&gt; 匹配?

编辑 主应用程序 url 的 url.py

urlpatterns = [
    path('blogs/', include(('blogs.urls', 'blogs'), namespace = 'blogs')),
    path('admin/', admin.site.urls),
]

【问题讨论】:

您能否将包含create 的其余网址包括在内?将create 放在blogs 之前可能会起作用 我做了,但仍然收到错误 您更新了您的网址以匹配上面的代码并且/blogs/create 仍然进入views.show 视图?这听起来不太可能。您可以发布其余的网址吗? 请。 /blogs/create/ 转到 views.create 视图,但 /blogs/create 转到 views.show 视图 【参考方案1】:

选项 1

你有没有把你的应用放在项目 settings.py 中的已安装应用中。

选项 2。

您需要在项目 urls.py 文件中提及 blogs/urls.py 文件。

【讨论】:

是的,我做了,两种选择...

以上是关于Django 排除 url 模式的主要内容,如果未能解决你的问题,请参考以下文章

为 Sitemesh 选择合适的 url 模式以将我的 servlet 从其装饰器中排除?

Django url 模式不是注册的视图函数或模式

%20 的 django url 模式

试图在 django 项目的 urls 文件夹中包含 url 模式

Django 类似的 url 模式问题

django 模板标签 url 仅在最后一个空 url 模式时有效