Pergunta

Posso imprimir um URL /admin/manage/products/add de uma determinada visão em um modelo?

Aqui está a regra para a qual desejo criar um link

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

Eu gostaria de ter /manage/products/add em um modelo sem codificá-lo.Como posso fazer isso?

Editar: Não estou usando o administrador padrão (bem, estou, mas está em outro URL), este é meu

Foi útil?

Solução

Você pode usar get_absolute_url, mas isso só funcionará para um objeto específico.Como o seu objeto ainda não foi criado, não funcionará neste caso.

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

Altere a linha em seu urls.py para:

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

Então, no seu modelo, você usa isto para exibir o URL:

{% url create-product %}

Se você estiver usando Django 1.5 ou superior, você precisará disto:

{% url 'create-product' %}

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

Outras dicas

Se você usar padrões de URL nomeados você pode fazer o seguinte no seu modelo

{% url create_object %}

A maneira preferida de criar o URL é adicionando um get_absolute_url método para suas classes de modelo.Você pode codificar o caminho até lá para pelo menos chegar mais perto de seguir a filosofia KISS.

Você pode ir mais longe utilizando o permalink decorador que calcula o caminho com base na configuração das urls.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top