我正在撰写一个简单的应用博客
Django==2.0.4
我想创建人类可读的URL
models.py
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
对于这个模型,我会添加slug = models.SlugField('id_url', max_length=255, unique=True)
,对吧?
接下来,我将添加到网址
urlpatterns = [
path(r'', views.post_list, name='post_list'),
path(r'post/<str:slug>/', views.post_detail, name='post_detail'),
]
右?
但我不明白我需要在views.py
中添加def get_absolute_url(self)
并需要我models.py
,我希望你帮助我。感谢。
答案 0 :(得分:1)
在您的模型中,您需要
def get_absolute_url(self):
return '/post/%s' % (self.slug)
或
def get_absolute_url(self):
return redirect('post_detail', slug=self.slug)
在您的观点中,您可以正常写作:
def post_detail(request):
#do something
return render(request, 'post-detail.html', context)