【问题标题】:error:Reverse for 'centreupdate' with keyword arguments '{'pk': 2}' not found. 1 pattern(s) tried: ['NewApp/centreupdate/(?P<slug>[-\\w\\d]+)']错误:未找到带有关键字参数“{'pk':2}”的“centreupdate”的反向。尝试了 1 种模式:['NewApp/centreupdate/(?P<slug>[-\\w\\d]+)']
【发布时间】: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


【解决方案1】:

你传递了pk,但在url中你声明了slug,这样它就成了一个slug但没有找到。 在此更改

url(r'^centreupdate/(?P<pk>[-\w\d]+)',views.CentreUpdateView.as_view(),name='centreupdate'),

【讨论】:

  • 那有什么用呢?由于这个 url,它仍然显示主键。
  • 而不是这个url(r'^centreupdate/(?P&lt;slug&gt;[-\w\d]+)',views.CentreUpdateView.as_view(),name='centreupdate'),
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2020-11-24
  • 1970-01-01
相关资源
最近更新 更多