关于python:Django:打印视图URL而不对URL进行硬编码

关于python:Django:打印视图URL而不对URL进行硬编码

Django: Print url of view without hardcoding the url

我可以在模板中打印出某个视图的URL /admin/manage/products/add吗?

这是我要为其创建链接的规则

1
(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),

我想将/ manage / products / add添加到模板中而不对其进行硬编码。 我怎样才能做到这一点?

编辑:我没有使用默认的管理员(嗯,我是,但它在另一个URL),这是我自己的


您可以使用get_absolute_url,但这仅适用于特定对象。由于尚未创建对象,因此在这种情况下将无法使用。

您要使用命名的URL模式。快速介绍:

将您的urls.py中的行更改为:

1
(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''},"create-product"),

然后,在模板中使用它显示URL:

1
{% url create-product %}

如果您使用的是Django 1.5或更高版本,则需要:

1
{% url 'create-product' %}

您可以使用命名URL模式做一些更强大的事情,它们非常方便。请注意,它们仅在开发版本(以及1.0)中。


如果您使用命名的网址格式,则可以在模板中进行以下操作

1
{% url create_object %}

创建URL的首选方法是在模型类中添加get_absolute_url方法。您可以在此处对路径进行硬编码,因此至少可以更进一步遵循KISS哲学。

您可以通过使用permalink装饰器来进一步了解该装饰器,该装饰器根据urls配置来计算路径。

您可以在django文档中阅读更多信息。


推荐阅读