我有這樣的模型:
class Region(models.Model):
region_parent = models.ForeignKey(
"self", blank=True, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=255)
title = models.CharField(max_length=255)
description = RichTextField()
description_on_list = RichTextField(blank=True)
thumbnail = models.ImageField(
upload_to="thumbnail-region", blank=True, max_length=255)
sidebar = RichTextField(blank=True)
ad_manager = models.TextField(blank=True)
meta_keywords = models.TextField(blank=True)
logo_on_navbar = models.ImageField(
upload_to="logo-on-navbar/", blank=True, max_length=255)
display_on_navbar = models.BooleanField(default=True)
slug = models.SlugField(unique=True)
def get_absolute_url(self):
if self.region_parent is not None:
return reverse('vineyards:region', kwargs={'parent': self.region_parent.slug, 'region': self.slug})
else:
return reverse('vineyards:region-without-parent', kwargs={'region': self.slug})
class Vineyard(models.Model):
name = models.CharField(max_length=255)
text = RichTextField()
rating = models.FloatField()
custom_overlay = models.ImageField(
upload_to="custom-rating/", blank=True, max_length=255)
google_map = models.TextField()
wine_rg_url = models.URLField(blank=True)
wine_rg = models.CharField(max_length=255)
wines_url = models.URLField(blank=True)
wines = models.CharField(max_length=255)
size = models.CharField(max_length=255)
grapes = models.CharField(max_length=255)
owner_url = models.URLField(blank=True)
owner = models.CharField(max_length=255)
visits = models.CharField(max_length=255)
region = models.ForeignKey(Region, on_delete=models.CASCADE)
regions = models.ManyToManyField(
Region, blank=True, related_name="regions")
cover = models.ImageField(upload_to="vineyard/", max_length=255)
sidebar = RichTextField(blank=True)
ad_manager = models.TextField(blank=True)
meta_keywords = models.TextField(blank=True)
top_slider = models.BooleanField(default=False)
cover_slider = models.BooleanField(default=False)
hide_rating = models.BooleanField(default=False)
slug = models.SlugField(unique=True)
def get_absolute_url(self):
if self.region.region_parent is not None:
return reverse('vineyards:detail', kwargs={'parent': self.region.region_parent.slug, 'region': self.region.slug, 'slug': self.slug})
else:
return reverse('vineyards:detail-without-parent', kwargs={'region': self.region.slug, 'slug': self.slug})
這是我的 urls.py:
app_name = 'vineyards'
urlpatterns = [
path('<str:parent>/<str:region>/<slug:slug>/form/',
rr_form, name="detail-form"),
path('<str:region>/<slug:slug>/form/',
rr_form, name="detail-without-parent-form"),
path('<str:parent>/<str:region>/', vineyard_region, name="region"),
path('<str:region>/', vineyard_region, name="region-without-parent"),
path('<str:parent>/<str:region>/<slug:slug>/',
vineyard_detail, name="detail"),
path('<str:region>/<slug:slug>/',
vineyard_detail, name="detail-without-parent"),
]
問題是,我無法訪問最后 2 條路徑(葡萄園:詳細資訊,葡萄園:沒有父項的詳細資訊)。我認為問題出在網址的順序上。我嘗試了不同的順序,但結果總是只有一個或一些網址有效,而不是全部。
是否有可能有一個具有相同路徑的 url 像這樣: slug/slug/ ?或者我應該將 url 拆分為兩個不同的檔案?有什么建議?
謝謝。
uj5u.com熱心網友回復:
您的 url 路徑必須是唯一的。否則 Django 應該如何知道請求使用哪個路徑?
如果多個路徑匹配 url 模式,Django 將使用第一個匹配的路徑。
在您的路徑中使用獨特的 url 模式。例如,
#this is just an example, adjust as it makes sense by your app logic
path('parent/<str:parent>/<str:region>/<slug:slug>/',
vineyard_detail, name="detail"),
path('detail/<str:region>/<slug:slug>/',
vineyard_detail, name="detail-without-parent"),
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/370171.html
標籤:姜戈 网址 django 模型 django-urls
