Pregunta

¿Puedo imprimir una URL? /admin/manage/products/add de una determinada vista en una plantilla?

Aquí está la regla para la que quiero crear un enlace.

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

Me gustaría tener /manage/products/add en una plantilla sin codificarla.¿Cómo puedo hacer esto?

Editar: No estoy usando el administrador predeterminado (bueno, lo estoy haciendo, pero está en otra URL), este es el mío.

¿Fue útil?

Solución

Puedes usar get_absolute_url, pero eso sólo funcionará para un objeto en particular.Como su objeto aún no se ha creado, no funcionará en este caso.

quieres usar patrones de URL con nombre.Aquí hay una introducción rápida:

Cambie la línea en su urls.py a:

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

Luego, en tu plantilla usas esto para mostrar la URL:

{% url create-product %}

Si estás usando Django 1.5 o superior necesitas esto:

{% url 'create-product' %}

Puedes hacer cosas más poderosas con patrones de URL con nombre, son muy útiles.Tenga en cuenta que solo están en la versión de desarrollo (y también en la 1.0).

Otros consejos

Si utiliza patrones de URL con nombre puedes hacer lo siguiente en tu plantilla

{% url create_object %}

La forma preferida de crear la URL es agregando un get_absolute_url método a sus clases modelo.Puedes codificar el camino allí para que al menos te acerques más a seguir la filosofía de KISS.

Puedes ir más allá utilizando el permalink Decorador que calcula la ruta según la configuración de las URL.

Puedes leer más en la documentación de Django. aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top