10

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

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

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

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

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

4

3 回答 3

17

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

您想使用命名的 URL 模式。这是一个快速介绍:

将 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)中。

于 2008-09-06T07:22:52.583 回答
2

如果您使用命名的 url 模式,您可以在模板中执行以下操作

{% url create_object %}
于 2008-09-06T02:49:38.247 回答
0

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

permalink您可以通过使用根据 urls 配置计算路径的装饰器走得更远。

您可以在此处的 django 文档中阅读更多内容。

于 2008-09-06T02:50:08.403 回答