【发布时间】:2023-03-11 22:14:01
【问题描述】:
我想在我的 url 中使用字段值而不是主键,我在互联网上查找并找到了一些代码。我想在 centerupdate url 中使用 slug,但我什至无法访问centerlist url。我做错了什么?提前致谢。
models.py
class Centre(models.Model):
name= models.CharField(max_length=50, blank=False, unique=True)
address = models.CharField(max_length =250)
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
message="Phone number must be entered in the format: '+999999999'. Up to 10 digits allowed.")
contact = models.CharField(max_length=100, blank=False)
phone = models.CharField(validators=[phone_regex], max_length=10, blank=True) # validators should be a list
slug = AutoSlugField(unique_with='id', populate_from='name')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("index")
urls.py
url(r'^createcentre/$', views.centre.as_view(), name='centreinfo'),
url(r'^centrelist/$', views.CentreListView.as_view(), name='centrelist'),
url(r'^centreupdate/(?P<slug>[-\w\d]+)',views.CentreUpdateView.as_view(),name='centreupdate'),
url(r'^centredelete/(?P<pk>\d+)/$',views.CentreDeleteView,name='centredelete'),
【问题讨论】:
-
您需要使用
{% url %}标记或reverse()或redirect()函数更新您调用该URL 的位置。 -
我像这样更新了 url:{% url 'NewApp:centreupdate' slug=c.slug %}(c 是模板中模型的循环变量)但现在我得到:Reverse for ' centerupdate' 关键字参数 '{'slug': ''}' 未找到。尝试了 1 种模式:['NewApp/centreupdate/(?P
[-\\w\\d]+)'] 这个错误。请帮忙。 -
您的一个模型中的 slug 字段为空白。
-
我只对一个模型使用了 slug。
-
是的。并且该模型的一个或多个实例有一个空 slug。或者
c不是你想的那样。
标签: python django django-models django-urls