Django: Print url de vista sem codificar a url

votos
7

I pode imprimir um url /admin/manage/products/addde uma certa visão em um modelo?

Aqui é a regra eu quero criar um link para

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

Eu gostaria de ter / gerenciar / products / adicionar em um modelo sem codificar-lo. Como posso fazer isso?

Edit: Eu não estou usando o administrador padrão (bem, eu sou, mas é em outro url), esta é a minha própria

Publicado 06/09/2008 em 03:42
fonte usuário
Em outras línguas...                            


3 respostas

votos
15

Você pode usar get_absolute_url, mas isso só vai funcionar para um determinado objeto. Desde o seu objeto não tenha sido criado ainda, que não vai funcionar neste caso.

Você quer usar padrões de URL nomeados . Aqui está uma breve introdução:

Altere a linha no seu urls.py para:

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

Então, em seu modelo que você usa isso para exibir a URL:

{% url create-product %}

Se você estiver usando Django 1.5 ou superior é necessário o seguinte:

{% url 'create-product' %}

Você pode fazer algumas coisas mais poderosas com padrões de URL nomeados, eles são muito útil. Note que eles são apenas na versão de desenvolvimento (e também 1.0).

Respondeu 06/09/2008 em 08:22
fonte usuário

votos
2

Se você usar o nome padrões de URL que você pode fazer o follwing em seu modelo

{% url create_object %}
Respondeu 06/09/2008 em 03:49
fonte usuário

votos
0

A maneira preferida de criar a URL é pela adição de um get_absolute_urlmétodo para suas classes de modelo. Você pode codificar o caminho lá para que você pelo menos se aproximar seguindo a filosofia KISS.

Você pode ir mais longe, utilizando o permalinkdecorador que figura o caminho com base na configuração urls.

Você pode ler mais na documentação do Django aqui .

Respondeu 06/09/2008 em 03:50
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more