Я пытаюсь создать шаблон URL для перехвата всех URL из root.
мой основной urls.py:
path('', (include('myapp.urls', namespace='app1')
Я использую два шаблона URL в app1.urls:
re_path(r'^(?P<url_var1>[-\w./]+)/$', DetailView1.as_view(), name='DetailView1'),
re_path(r'^(?P<url_var2>[-\w./]+)/$', DetailView2.as_view(), name='DetailView2'),
Мой файл views.py выглядит так:
class DetailView1(View):
template_name = 'detail.html'
def get(self, request, url_var1):
obj1 = model1.objects.get(my_url=url_var1)
return render(request, self.template_name, {'obj1':obj1})
class DetailView2(View):
template_name = 'detail.html'
def get(self, request, url_var2):
obj2 = model2.objects.get(my_url=url_var2)
return render(request, self.template_name, {'obj2':obj2})
, когда я запрашиваю URL "/ first-post / my-first-post /", он проверяет URL, которыйнаходится в моем "model1" под заголовком "my_url" и возвращает страницу.
Но когда я запрашиваю URL "/ second-post / my-second-post /", он проверяет URL в "model1"и выдает ошибку, так как URL находится в" model2 "под заголовком" my_url ".
Я знаю, что urlpattern следует проверке последовательности и останавливается на шаблоне, который соответствует первому urlpattern (DetailView1),Вот почему он дает мне эту ошибку.
Я хочу знать, есть ли способ, которым я могу переопределить это поведение urlpattern.
Я также попытался отменить, когда URL не найден в DetailView1:
try:
obj1 = model1.objects.get(my_url=url_var1)
except:
return reverse('app1:DetailView2')
Но это все равно дает мне ошибку.
Если у кого-нибудь из вас есть какие-либо другие предложения по отлову urlpatСкажите, пожалуйста, скажите, что мне нужно сделать, чтобы узнать, что такое root, а не два типа urlpattern.
Я делаю сайт, посвященный продукту, в котором есть две модели: «model1» - модель продукта, и «model2» - модель блога.,Теперь «модель1» предназначена для автомобилей с двумя основными категориями: «автомобиль» и «велосипед», а «модель2» имеет то же самое, что и «последние автомобили» и «последние велосипеды».Для этих категорий я хочу получить URL-адреса из корня, которые были заданы как "/ cars / lexus .....", "/ bike / ducati ....".Кроме того, могут быть дополнительные добавления URL-адреса подпапки, и все URL-адреса имеют идентификаторы продуктов, имеющие "."и цифры.Таким образом, есть способ, которым я могу выбрать URL для корневого каталога для обеих моделей, используя приведенный выше шаблон URL.