Django-fr

Forum

#1 02-01-2018 20:15:28

domicode
Membre
Lieu : Québec
Inscription : 02-01-2018
Messages : 2

Redirection d'url dans un template

bonjour à toutes et tous,

Environnement :
1- Python version 3.4
2- Django version 2.0

Problème :
J'utilise le tag {% url ....%} pour faire de la redirection dans un template.

Voici le code dans le template :
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Blog</title>
</head>
<body>
    <h1>la liste des posts</h1>
    {% for post in object_list %}
       Titre : {{ post }}  {{ post.pk }}
        <a href="{% url 'blog:detail' '{{ post.pk }}' %}">detail</a>
        <br />
    {% endfor %}

    <hr>
    <a href="{% url 'blog:home' %}">home</a>

</body>
</html>

voici le code URLS
urlpatterns = [
    path('', home, name='home'),
    path('liste/', ListView.as_view(model=Post), name='liste'),
    path('post/<int:pk>/detail/', post, name='detail'),
]

voici le code Views
def post(request, pk=1):
    cepost = Post.objects.get(pk=pk)
    context = {'post': cepost}
    return render(request, 'blog/post.html', context)

les résultats :
<a href="{% url 'blog:home' %}">home</a> : celle-ci fonctionne très bien. Un namespace "blog" et une URL nommée "home", tout est simple et parfait.
<a href="{% url 'blog:detail' '{{ post.pk }}' %}">detail</a> : celle-là ne fonctionne pas et génère l'erreur suivante :
django.urls.exceptions.NoReverseMatch: Reverse for 'detail' with arguments '('{{ post.pk }}',)' not found. 1 pattern(s) tried: ['blog\\/post\\/(?P<pk>[0-9]+)\\/detail\\/$']

Après vérification dans la doc Django 2.0 et sur de nombreux site, je ne vois pas où est l'erreur!!!!
Ai-je manqué quelque chose?

Si quelqu'un-e à une idée, je suis preneur. Merci


Domicode, Québec
En toutes circonstances, gardez le sourire !

Hors ligne

#2 15-01-2018 08:40:43

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Redirection d'url dans un template

"{% url 'blog:detail' post.pk %}" devrait marcher. le {{}} ne sert que lorsque que tu es dans le template, à l'exclusion des tags.

Hors ligne

#3 15-01-2018 09:35:33

domicode
Membre
Lieu : Québec
Inscription : 02-01-2018
Messages : 2

Re : Redirection d'url dans un template

salut,

je viens de modifier mon code en fonction de ta remarque et ...
tout fonctionne à merveille.

merci pour le coup de main.


Domicode, Québec
En toutes circonstances, gardez le sourire !

Hors ligne

Pied de page des forums