Skip to main content
 首页 » 编程设计

python之创建 Django slug 方法

2024年10月24日33lyhabc

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

场景如下:我有一个 models.py,其中包含一本包含 3 个字段的类(class)书:名称、价格和作者。我想为 name 和 autor 返回一个 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) 

然后你可以在你的 url 中使用 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"