对象返回规范的url的两种方式的两种方式

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/'

 

转载于:https://www.cnblogs.com/hhy-love-python/p/8509630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值