我刚刚开始使用Django一段时间了,我一直试图使用slug。我知道它们是什么,但是我很难定义一个简单的slug并将它显示在我的浏览器上。
以下是场景:我有一个models.py,其中包含一个包含3个字段的课本:名称,价格和Autor。我想为name和autor重新调整一个slug字符串,只用连字符( - )和小写字母。
我的问题是如何实现这一目标。仅使用模型,视图和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,)
答案 0 :(得分:2)
from django.template.defaultfilters import slugify
将以下内容添加到您的模型中:
def save(self,*args,**kwargs):
self.slug = slugify(self.name)
return super(Book,self).save(*args,**kwargs)
然后你可以在你的网址中使用slu ::
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"
答案 1 :(得分:0)
您可以将它添加到models.py文件中:
def save(self , *args , **kwargs):
if not self.slug:
self.slug=slugify(self.name)
super(Book, self).save(*args, **kwargs)
它对我有用。