首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Slugify时没有反向匹配

使用Slugify时没有反向匹配
EN

Stack Overflow用户
提问于 2021-02-15 15:15:58
回答 2查看 101关注 0票数 0

模型字段:

代码语言:javascript
复制
url_slug = models.SlugField(default='', max_length=200, null=False)

模型方法:

代码语言:javascript
复制
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:

代码语言:javascript
复制
path('blogs/<str:url_slug>-<int:pk>/', BlogDetailView.as_view(), name='post-detail'),

模板网址:

代码语言:javascript
复制
"{% url 'post-detail' blog.url_slug|slugify blog.pk %}"

错误:

代码语言:javascript
复制
Reverse for 'post-detail' with arguments '(56,)' not found. 1 pattern(s) tried: ['blogs\\/(?P<url_slug>[^/]+)\\-(?P<pk>[0-9]+)\\/$']

不知道这是什么问题吗?

编辑:

值得注意的是,在已经创建了几个模型对象之后,我创建了slugify方法,但是我返回并为所有这些对象添加了url_slug字段。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-15 16:27:58

使用以下方法:

代码语言:javascript
复制
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 }}"

票数 1
EN

Stack Overflow用户

发布于 2021-02-15 16:12:56

我认为你缺少的是,你应该使用模型方法代替。喜欢

代码语言:javascript
复制
"{{ blog.get_absolute_url }}"

因为你已经定义好了。确保不调用模板中的方法,因为它将被自动调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66210593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档