【发布时间】:2017-06-04 08:26:30
【问题描述】:
(Django v 1.10.4) 我正在尝试使用两个单独的应用程序,它们的 url 前缀是站点的根目录(我正在从另一个站点迁移到 django 并且需要维护现有的 url 结构)。有问题的两个应用程序/模型是“artistbio/Bio”和“pages/BasicPage”。目前我在主 url 配置中有 url 模式(最初它们在各自的 url.py 文件中,但我遇到的问题是相同的):
from django.conf.urls import include, url
from django.contrib import admin
from django.conf import settings
from artistbio.views import BioDetail
from pages.views import PageDetail
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^(?P<slug>[\w\-]+)/', PageDetail.as_view()),
url(r'^(?P<slug>[-\w]+)/', BioDetail.as_view(), name='bio-detail'),
我读过的所有内容(以及迄今为止我的所有经验)都表明,Django 将尝试将请求与每个 URL 模式匹配,然后给出“不匹配任何 url 模式”错误或“404 未找到”如果请求的对象确实不存在,则会出错。但是现在当两种模式一起出现时,当我通过 BioDetail 请求 Bio 对象时,它会尝试匹配 PageDetail 的 URL 模式并给我一个 404 错误(这是有道理的),但这似乎也意味着 Django 永远不会移动转到下一个肯定会匹配的 URL 模式。如果我切换它们,并将 BioDetail 模式放在 PageDetail 模式之上,正如预期的那样,我可以访问 Bio 对象,但不能访问 Page 对象。
我已经阅读了我能找到的所有适用的 StackOverflow 条目,阅读了所有官方文档并引用了 Django Unleashed,但似乎仍然缺少解决方案!
【问题讨论】:
标签: python django django-views django-urls