Python 如何在Django中创建人类可读的URL
我正在写一个简单的应用程序博客。Python 如何在Django中创建人类可读的URL,python,django,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 = model
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\u url',max\u length=255,unique=True)
,对吗?接下来,我将添加到URL
urlpatterns = [
path(r'', views.post_list, name='post_list'),
path(r'post/<str:slug>/', views.post_detail, name='post_detail'),
]
urlpatterns=[
路径(r“”,views.post_list,name='post_list'),
路径(r'post/',views.post_detail,name='post_detail'),
]
对吗?但是我不明白我需要添加什么到
views.py
中,以及是否需要我def get_absolute\u url(self)
在models.py
中,我希望您能帮助我。谢谢。在您想要的型号中
def get_absolute_url(self):
return '/post/%s' % (self.slug)
或
在您的视图中,您可以正常地编写:
def post_detail(request):
#do something
return render(request, 'post-detail.html', context)
-它不起作用,为什么我不明白这是我的URL和我的models.py。你的html是什么?你的模型没有名为
slug
def post_detail(request):
#do something
return render(request, 'post-detail.html', context)