tags:

views:

1194

answers:

3

Can i print out a url (/admin/manage/products/add) of a certain view in a template?

Here is the rule i want to create a link for

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

I would like to have /manage/products/add in a template without hardcoding it. How can i do this?

Edit: I am not using the default admin (well, i am but it is at another url), this is my own

A: 

If you use named url patterns you can do the follwing in your template

{% url create_object %}
Peter Hoffmann
A: 

The preferred way of creating the URL is by adding a get_absolute_url method to your model classes. You can hardcode the path there so you at least get closer to following the KISS philosophy.

You can go further by utilizing the permalink decorator that figures the path based on the urls configuration.

You can read more in the django documentation here.

Cristian
+5  A: 

You can use get_absolute_url, but that will only work for a particular object. Since your object hasn't been created yet, it won't work in this case.

You want to use named URL patterns. Here's a quick intro:

Change the line in your urls.py to:

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

Then, in your template you use this to display the URL:

{% url create-product %}

You can do some more powerful things with named URL patterns, they're very handy. Note that they are only in the development version (and also 1.0).

Harley