Django:打印网址,无需对网址进行硬编码

时间:2008-09-06 02:42:49

标签: python django

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

以下是我想为

创建链接的规则
(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),

我想在没有硬编码的情况下将/ manage / products / add添加到模板中。我怎么能这样做?

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

3 个答案:

答案 0 :(得分:15)

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

您想使用named URL patterns。这是一个快速介绍:

将urls.py中的行更改为:

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

然后,在您的模板中,您可以使用它来显示URL:

{% url create-product %}

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

{% url 'create-product' %}

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

答案 1 :(得分:2)

如果您使用named url patterns,则可以在模板中执行以下操作

{% url create_object %}

答案 2 :(得分:0)

创建URL的首选方法是在模型类中添加get_absolute_url方法。您可以对那里的路径进行硬编码,这样您至少可以更接近遵循KISS理念。

您可以使用基于网址配置计算路径的permalink装饰器,进一步发展。

您可以在django文档here中阅读更多内容。