1. 在类模型中添加get_absolute_url()
def get_absolute_url(self): #使用strftime()保证个位数的月份和日期需要带0来构建url return reverse('blog:post_detail',args=[self.publish.year,self.publish.strftime('%m'),self.publish.strftime('%d'),self.slug])
2.另外一种方式为一个模型(model)指定一个URL是为你的项目添加ABSOLUTE_URL_OVERRIDES设置(如果是内置模型,该方式十分管用)。
ABSOLUTE_URL_OVERRIDES = { 'auth.user': lambda u: reverse_lazy('user_detail', args=[u.username]) }
3.Django会为所有出现在ABSOLUTE_URL_OVERRIDES设置中的模型(models)动态添加一个get_absolute_url()
方法。这个方法会给设置中指定的模型返回规范的URL。我们给传入的用户返回user_detail URL。现在你可以在一个User实例上使用get_absolute_url()
来取回他自身的规范URL。打开Python shell输入命令python manage.py shell
运行以下代码来进行测试:
>>> from django.contrib.auth.models import User >>> user = User.objects.latest('id') >>> str(user.get_absolute_url()) '/account/users/ellington/'