Django中的get_absolute_url()函数是一个作用于models.Model类的方法,它的作用是返回一个对象的URL,以便进行自动生成的链接,该函数可以被Django内置视图和其他第三方库使用。
使用方法
1. 在models.Model中定义get_absolute_url()
在models.py文件中,可以为每个必须展示在用户面前的模型定义get_absolute_url()方法,该方法应该返回该模型的访问URL。如下所示:
from django.urls import reverse
class MyModel(models.Model):
name = models.CharField(max_length=100)
pub_date = models.DateTimeField()
def get_absolute_url(self):
return reverse('myapp:mymodel_detail', args=[str(self.id)])
上述示例中的MyModel包含了一个名为name的CharField和一个名为pub_date的DateTimeField。我们定义了一个get_absolute_url()函数,以返回此模型的URL。
这里使用Django内置的reverse()函数,该函数根据给定的URL模式名称和参数返回一个URL字符串。
2. 在模板中使用模型实例的get_absolute_url()
如果想在模板中生成该模型对象的URL,可使用get_absolute_url()方法,如下所示:
<a href="{{ mymodel.get_absolute_url }}">{{ mymodel.name }}</a>
在此示例中,我们将mymodel对象的get_absolute_url()方法用于超链接的href属性。
示例
示例1:Blog类
from django.urls import reverse
class Blog(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def get_absolute_url(self):
return reverse('blog_detail', kwargs={'pk':self.pk})
在上述示例中,Blog类包括有标题,作者,文章具体内容以及发布日期等字段。在定义该模型时,我们定义了 get_absolute_url()方法以返回该模型的URL。
示例2:Tag类
class Tag(models.Model):
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('tag_detail', kwargs={'pk':self.pk})
在上述示例中,Tag类针对于文章的分类而设,其包括只有一个名为name的字段。我们也为实例化的每个Tag定义了相应的 get_absolute_url()函数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Django的 get_absolute_url() 函数:返回模型对象的 URL - Python技术站