模型字段:
url_slug = models.SlugField(default='', max_length=200, null=False)模型方法:
def get_absolute_url(self):
new_kwargs = {
'pk': self.pk,
'url_slug': self.url_slug
}
return reverse('post-detail', kwargs=new_kwargs)
def save(self, *args, **kwargs):
value = self.title
self.url_slug = slugify(value, allow_unicode=True)
super().save(*args, **kwargs)urls.py:
path('blogs/<str:url_slug>-<int:pk>/', BlogDetailView.as_view(), name='post-detail'),模板网址:
"{% url 'post-detail' blog.url_slug|slugify blog.pk %}"错误:
Reverse for 'post-detail' with arguments '(56,)' not found. 1 pattern(s) tried: ['blogs\\/(?P<url_slug>[^/]+)\\-(?P<pk>[0-9]+)\\/$']不知道这是什么问题吗?
编辑:
值得注意的是,在已经创建了几个模型对象之后,我创建了slugify方法,但是我返回并为所有这些对象添加了url_slug字段。
发布于 2021-02-15 16:27:58
使用以下方法:
def get_absolute_url(self):
new_kwargs = {
'slug': self.url_slug,
'pk': self.pk
}网址:
path('blogs/<slug:slug>-<int:pk>', BlogDetailView.as_view(), name='post-detail'),
模板href:
"{{ blog.get_absolute_url }}"
发布于 2021-02-15 16:12:56
我认为你缺少的是,你应该使用模型方法代替。喜欢
"{{ blog.get_absolute_url }}"因为你已经定义好了。确保不调用模板中的方法,因为它将被自动调用。
https://stackoverflow.com/questions/66210593
复制相似问题