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