2009-03-14 7 views
2

Donc, voici un de mes urls.pyDjango nommé urls, vues génériques?

urlpatterns = patterns('items.views', 
    url(r'^(?P<item_id>[\d+])/$', 'view_listing', name="item_view"), 
) 

Et dans mon modèle, je peux le faire: <a href="{% url item_view 1 %}">here</a> et je vais obtenir un lien vers la bonne page. Tout fonctionne bien!

Mais, voici une autre

urlpatterns = patterns('django.views.generic.list_detail', 
    (r'^(?P<slug>[\w-]+)/$', 'object_detail', dict(page_info, slug_field='slug'), "page_view"), 
) 

Mais dans mon modèle si j'essayez ceci: <a href="{% url page_view slug='TermsAndConditions' %}">Terms and Conditions</a> ou ce <a href="{% url page_view 'TermsAndConditions' %}">Terms and Conditions</a> il des erreurs avec cette erreur:

TemplateSyntaxError at/

Could not parse the remainder: ''TermsAndConditions '' from ''TermsAndConditions '' 

Est-ce que quelqu'un sait s'il est possible utiliser des URLs nommés avec des vues génériques et le tag de modèle url comme ceci? Ou la bonne façon de le faire fonctionner avec des vues génériques?

Merci.

Répondre

4

La solution est

<a href='{% url page_view slug="TermsAndConditions" %}'>Terms and Conditions</a> 
+0

Qui aurait pensé une solution aussi simple que de changer les types de citations serait le correctif. Je ne travaille même plus sur le site, mais en tout cas, j'ai fait un test rapide, et ça a marché. Merci. – TehOne

0

Ne pas mettre des guillemets autour de la chaîne « TermsAndConditions »:

{% url page_view slug=TermsAndConditions %} 
+0

Cela me donne maintenant une autre erreur. Capture d'une exception lors du rendu: Inverser pour 'listitstolen.page_view' avec les arguments '()' et les arguments '{' slug ':' '}' non trouvé. – TehOne

+0

Désolé, faites le avec des guillemets. Je pensais que c'était une variable que vous essayiez d'utiliser. –

+0

J'avais déjà essayé cela auparavant, et ça ne marche pas non plus. J'ai reçu cette erreur: TemplateSyntaxError at/ Capture d'une exception lors du rendu: Inverse pour 'listitstolen.page_view' avec les arguments '()' et les arguments de mot clé '{' slug ': u'TermsAndConditions'} 'introuvable. – TehOne

4

Le système de modèle dans Django ne supporte que des guillemets doubles, ce qui explique l'erreur de syntaxe que vous obtenez lorsque vous utilisez des guillemets simples. Vous devez faire

{% url page_view slug="TermsAndConditions" %} 

Si vous omettez les citations, les choses Django vous faites référence à une variable nommée TermsAndConditions.

+0

J'avais déjà essayé cela auparavant, et ça ne marche pas non plus. J'ai reçu cette erreur: TemplateSyntaxError at/ Capture d'une exception lors du rendu: Inverse pour 'listitstolen.page_view' avec les arguments '()' et les arguments de mot clé '{' slug ': u'TermsAndConditions'} 'introuvable. – TehOne

+1

Étrange. Cela fonctionne pour moi - j'ai mis l'URLconf pour page_view dans un projet vide et j'ai essayé le code du template dans un shell - l'inverse a fonctionné. Essayez d'utiliser url() dans l'URLconf (même si je suppose que cela ne fait pas de différence ...) et essayez aussi la version positionnelle: {% url page_view "TermsAndConditions"%} –

+0

N'a toujours pas fonctionné. Je ne sais pas comment cela a fonctionné pour vous et pas pour moi, mais ce ne serait pas la première fois dans la programmation que c'est le cas. Je me demande ce qui est différent entre les implémentations out. Vous avez pu le faire fonctionner en utilisant la vue de détail générique? Voici mon code http://dpaste.com/hold/15428/ – TehOne

Questions connexes