2008-09-06 110 views
7

我可以打印出模板中某个视图的网址/admin/manage/products/add吗?Django:打印网址的视图没有硬编码的网址

这里是我想创建一个链接

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

我想有/管理/产品/在模板中添加没有硬编码规则。我怎样才能做到这一点?

编辑:我不使用默认的admin(嗯,我觉得却是在另一个URL),这是我自己

回答

15

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

您想使用named URL patterns。下面是一个简单的介绍:

改变你urls.py行至:

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

然后,在你的模板,你用它显示的网址:

{% url create-product %} 

如果你使用Django 1.5或更高版本,你需要这样的:

{% url 'create-product' %} 

你可以做一些更强大的事情名为URL模式中,你很方便。请注意,它们只在开发版本(也是1.0)中。

+0

如何在我的视图中调用url?例如,返回HttpResponseRedirect(...)其中...是url的值create-product – g33kz0r 2011-06-21 10:42:23

2

如果使用named url patterns你可以做你的模板中的follwing

{% url create_object %} 
0

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

您可以使用permalink装饰器进一步研究,该装饰器根据url配置计算路径。

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