Como incorporar uma tag dentro de um templatetag url em um modelo de Django?

votos
3

Como faço para incorporar uma tag dentro de um templatetag url em um modelo de Django?

Django 1.0, 2.5.2 Python

em views.py

def home_page_view(request):
    NUP={HOMEPAGE: named-url-pattern-string-for-my-home-page-view}    
    variables = RequestContext(request, {'NUP':NUP})
    return render_to_response('home_page.html', variables)

Em home_page.html, o seguinte

NUP.HOMEPAGE = ` NUP`.`HOMEPAGE `

é apresentado como

NUP.HOMEPAGE = named-url-pattern-string-for-my-home-page-view

ea seguinte url chamado padrão funciona (como esperado),

url template tag for NUP.HOMEPAGE = {% url named-url-pattern-string-for-my-home-page-view %}

e é apresentado como

url template tag for NUP.HOMEPAGE = /myhomepage/

mas quando ` NUP`.`HOMEPAGE `é incorporado dentro de um {% url ... %}como se segue

url template tag for NUP.HOMEPAGE = {% url ` NUP`.`HOMEPAGE ` %}

isso resulta em um erro de sintaxe do modelo

TemplateSyntaxError at /myhomepage/
Could not parse the remainder: '}}' from '}}'
Request Method: GET
Request URL:    http://localhost:8000/myhomepage/
Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse the remainder: '}}' from '}}'
Exception Location: C:\Python25\Lib\site-packages\django\template\__init__.py in __init__, line 529
Python Executable:  C:\Python25\python.exe
Python Version: 2.5.2

Eu estava esperando {% url ` NUP`.`HOMEPAGE ` %}para resolver a {% url named-url-pattern-string-for-my-home-page-view %} em tempo de execução e ser apresentado como /myhomepage/.

São marcas não suportadas no Django incorporado?

é possível escrever uma tag url personalizada com etiquetas embutidas apoiar para fazer este trabalho?

{% url ` NUP`.`HOMEPAGE ` %}

Publicado 31/10/2008 em 21:45
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Talvez você poderia tentar passar a URL final para o modelo, em vez disso?

Algo assim:

from django.core.urlresolvers import reverse

def home_page_view(request):
    NUP={"HOMEPAGE": reverse('named-url-pattern-string-for-my-home-page-view')}    
    variables = RequestContext(request, {'NUP':NUP})
    return render_to_response('home_page.html', variables)

Em seguida, no modelo, o NUP.HOMEPAGEcaso a URL em si.

Respondeu 31/10/2008 em 22:00
fonte usuário

votos
0

Postado um bug para Django. Eles devem ser capazes de corrigir isso do seu lado.

http://code.djangoproject.com/ticket/10823

Respondeu 15/04/2009 em 14:28
fonte usuário

votos
0

Aquela parece ser muito dinâmico. Você deveria fazer

{% url named-url-pattern-string-for-my-home-page-view %}

E deixar por isso mesmo. Dinamicamente preenchendo o nome da tag URL é - francamente - um pouco estranho.

Se você quiser usar qualquer de um grande número de diferentes marcas de URL, você teria que fazer algo assim

{% if tagoption1 %}<a href="{% url named-url-1 %}">Text</a>{% endif %}

Que parece prolixo, porque, mais uma vez, a coisa dinâmica que você está tentando alcançar parece um pouco estranho.

Se você tiver algo como um "famílias" ou "clusters" de páginas, talvez diretórios de modelos separados seria uma maneira de gerenciar isso melhor. Cada um dos grupos de páginas pode herdar de um modelos de base e substituir as pequenas coisas como esta funcionalidade de navegação para manter todas as páginas no cluster que procuram semelhante, mas com uma diferença de navegação para um "home local".

Respondeu 31/10/2008 em 21:59
fonte usuário

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