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('<str:handle>', views.show, name = 'blogs'),
进入博客的详细信息页面。
当我导航到 http://localhost:8000/blogs/create
时,我收到 404 找不到博客错误
如何将create
排除在与博客详细信息页面的<str:handle>
匹配?
编辑 主应用程序 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 从其装饰器中排除?