在Django的模板语言中,您可以使用{% url [viewname] [args] %}
生成带有参数的特定视图的URL.你怎么能以编程方式在Python代码中做同样的事情?
我需要的是创建一个菜单项列表,其中每个项目都有名称,URL和活动标志(无论它是否是当前页面).这是因为在Python中执行此操作比使用模板语言要清晰得多.
如果你需要{% url %}
在代码中使用类似于模板标签的东西,Django会提供django.core.urlresolvers.reverse()
.该reverse
函数具有以下签名:
reverse(viewname, urlconf=None, args=None, kwargs=None)
https://docs.djangoproject.com/en/dev/ref/urlresolvers/
我正在使用两种不同的方法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)])