我刚开始使用 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"
