如何在Django中创建人类可读的URL

时间:2018-04-21 10:30:13

标签: python django

我正在撰写一个简单的应用博客 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,我希望你帮助我。感谢。

1 个答案:

答案 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)