(Django v 1.10.4) Я пытаюсь использовать два отдельных приложения, которые являются корневым сайтом для сайта (я переношу на django с другого сайта и нуждаюсь для поддержания существующей структуры URL-адресов). Эти два приложения/модели - «artistbio/Bio» и «pages/BasicPage». В настоящее время у меня есть шаблоны URL в главном URL-адрес конфигурации (первоначально они были в своих соответствующих url.py файлов, но проблема у меня есть одно и то же так или иначе):Янтарный шаблон URL-адреса Django в двух конфликтах отдельных приложений
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 не найден», если запрошенный объект действительно не существует. Но теперь, когда оба шаблона объединены, как указано выше, когда я запрашиваю объект Bio через BioDetail, он пытается сопоставить шаблон URL-адреса для PageDetail и дает мне ошибку 404 (что имеет смысл), но это также означает, что Django никогда не перемещается на следующий шаблон URL, где он, безусловно, будет соответствовать. Если я их переключу и поставлю шаблон BioDetail над шаблоном PageDetail, как и ожидалось, я получаю доступ к объектам Bio, но не к объектам страницы.
Я прочитал каждую применимую запись StackOverflow, которую я смог найти, прочитал все официальные документы и назвал Django Unleashed, но все еще, похоже, не хватает решения!
Благодарим вас за ответ Antwane. Поэтому я считаю, что то, что я пытаюсь сделать, просто невозможно? Если нет, я просто объединить обе модели в одну и двигаться дальше. – brandondavid
Да, это невозможно, если вы сами не разработаете особый вид для обработки этого конкретного случая (см. Конец ответа). – Antwane
У вас определенно должны быть разные схемы URL-адресов для художников и страниц, иначе в один прекрасный день у вас будет страница и художник с похожими слизнями, а другой будет теневым другим (или вам понадобится «страница с неоднозначными значениями»), которая является своего рода kludge). FWIW, имеющий все URL-адреса исполнителей с префиксом «/ artist /», делает идеальное чувство ИМХО даже от SEO POV. –