如何在djang中生成url

2024-04-28 22:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django的模板语言中,您可以使用{% url [viewname] [args] %}来生成带有参数的特定视图的URL。在Python代码中,如何编程实现相同的功能?

我需要的是创建一个菜单项列表,其中每个项都有名称、URL和活动标志(不管它是否是当前页面)。这是因为用Python做这件事比用模板语言要干净得多。


Tags: django代码功能名称视图模板语言url
3条回答

如果需要在代码中使用类似于{% url %}模板标记的东西,Django提供了django.core.urlresolvers.reverse()reverse函数具有以下签名:

reverse(viewname, urlconf=None, args=None, kwargs=None)

https://docs.djangoproject.com/en/dev/ref/urlresolvers/

请注意,使用reverse()要求urlconf模块100%无错误,并且可以进行处理-至少没有ViewDoesNotExist错误,或者出现可怕的NoReverseMatch异常(模板中的错误通常会无声地失败,导致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)])

相关问题 更多 >