Django如何解析URL?

Django如何解析URL?,django,Django,我正在查看DJango代码示例,试图了解URL是如何解析的 list.html 类别 希望我的问题是清楚的…获取绝对url是在模型(例如,类别)模型中定义的一个函数,如下所示: class Category(models.Model): name = models.CharField(max_length=200) ... def get_absolute_url(self): return "/category/%s/" % self.slug 还可

我正在查看DJango代码示例,试图了解URL是如何解析的

list.html

类别
希望我的问题是清楚的…

获取绝对url
是在模型(例如,
类别
)模型中定义的一个函数,如下所示:

class Category(models.Model):
    name = models.CharField(max_length=200)
    ...

    def get_absolute_url(self):
        return "/category/%s/" % self.slug
还可以使用
reverse
函数使用
url.py中定义的模式解析url:

def get_absolute_url(self):
    return reverse('catalog_category', args=[str(self.slug)])
这几乎等同于一种老式的形式:

@models.permalink
def get_absolute_url(self):
    return ('catalog_category', (), {'category_slug': str(self.slug)})
在这两种情况下,对类别对象调用
get\u absolute\u url
方法,例如
Category(name=“electronics”)
,将生成字符串:
/Category/electronics/


正如您在
url.py
中所看到的,第二个url模式名为
catalog\u category
,出现在reverse函数参数中。调用reverse函数时,Django将查看url.py文件,查找名为
catalog\u category
的模式,最终url将通过使用self.slug替换url参数(category\u slug)生成。

产品对象(
models.py
)上的
get\u absolute\u url方法是什么样的?我添加了模型。py…是的,获取绝对url..获取url..但是路径是如何解析的?哇,你确定吗?必须根据模型将URL解析为/product/[product_slug]/。
class Category(models.Model):
    name = models.CharField(max_length=200)
    ...

    def get_absolute_url(self):
        return "/category/%s/" % self.slug
def get_absolute_url(self):
    return reverse('catalog_category', args=[str(self.slug)])
@models.permalink
def get_absolute_url(self):
    return ('catalog_category', (), {'category_slug': str(self.slug)})