python - 创建 Django slug 方法

标签 python django django-models django-templates django-views

我刚刚开始使用 Django 一段时间,并且一直尝试使用 slug。我知道它们是什么,但我很难定义一个简单的 slug 并将其显示在我的浏览器上。

场景如下:我有一个 models.py,其中包含一本包含 3 个字段的类(class)书:名称、价格和作者。我想返回一个仅包含连字符 (-) 和小写字母的名称和作者的 slug 字符串。

我的问题是如何实现这一目标。仅使用模型、 View 和 html。这就是我到现在为止所拥有的。但不知道如何让它显示在我的浏览器上(localhost:8000/book_name)

class Book(models.Model):
    name = models.CharField(max_length=100)
    price = models.IntegerField(default=0)
    autor = models.CharField(max_length=100)

    slug = models.SlugField(unique=True)

    @models.permalink
    def get_absolute_url(self):
        return 'app:book', (self.slug,)

最佳答案

from django.template.defaultfilters import slugify

将以下内容添加到您的模型中:

def save(self,*args,**kwargs):

  self.slug = slugify(self.name)
  return super(Book,self).save(*args,**kwargs)

然后您可以在网址中使用 slug:

url(r'mybooks/(?P<slug>[-\w]+)/$', views.BookDetailView.as_view(),name='book_details'),

浏览次数:

from django.views import generic

class BookDetailView(generic.DetailView):

   template_name = "templates/book_detail.html"

关于python - 创建 Django slug 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35260900/

相关文章:

python - 在wireshark中看不到OPCUA协议(protocol)

python - 使用三个 xml 模式作为 lxml 中的一个组合模式进行验证?

django_select2 在渲染 : name 'patterns' is not defined 时捕获到 NameError

database - Django 中的syncdb 和更新数据库模式

sql - 什么时候应该使用save()的高级参数呢?

python - SQLite3 在一个 SELECT 语句中获取多列(python)

python - 如何在单独的行和列上正确编写 CSV 文件?

django - 如何为 django Rest API 生成静态 api 文档?

python - Django Orm : Custom Select column with aggregate functions for grouped values

python - 在 Django 中,objects.all() 不返回任何对象