在Django的模板语言中,您可以使用{% url [viewname] [args] %}
来生成具有参数的特定视图的网址。你如何在Python代码中编程执行相同的操作?如何在django中生成网址
我需要的是创建一个菜单项列表,其中每个项目都有名称,URL和活动标志(无论是否为当前页面)。这是因为在Python中执行此操作比模板语言更清晰。
在Django的模板语言中,您可以使用{% url [viewname] [args] %}
来生成具有参数的特定视图的网址。你如何在Python代码中编程执行相同的操作?如何在django中生成网址
我需要的是创建一个菜单项列表,其中每个项目都有名称,URL和活动标志(无论是否为当前页面)。这是因为在Python中执行此操作比模板语言更清晰。
如果您需要在代码中使用类似于{% url %}
模板标记的内容,Django会提供django.core.urlresolvers.reverse()
。该reverse
功能具有以下特征:
reverse(viewname, urlconf=None, args=None, kwargs=None)
我用我的models.py
两种不同的方法。首先是permalink
装饰:
from django.db.models import permalink
def get_absolute_url(self):
"""Construct the absolute URL for this Item."""
return ('project.app.views.view_name', [str(self.id)])
get_absolute_url = permalink(get_absolute_url)
您也可以拨打reverse
直接:
from django.core.urlresolvers import reverse
def get_absolute_url(self):
"""Construct the absolute URL for this Item."""
return reverse('project.app.views.view_name', None, [str(self.id)])
注意,使用reverse()
需要你的URLconf模块是100%无差错,并可以加工 - 督察无ViewDoesNotExist
错误,或者你会遇到可怕的异常(模板中的错误通常会失败,导致None
)。
这和使用装饰器一样吗? @ models.permalink – 2010-10-21 14:44:52