J'essaie de créer un formulaire de recherche simple dans Django. Voici ce que j'ai jusqu'à présent:NoReverseMatch: Impossible de passer le paramètre du modèle à l'affichage.
forme:
<form action="{% url 'search_pub' pub_name=pub_name %}" method="get">
Publication name: <input type="text" id="pub_name" name="pub_name" value="herald">
<input type="submit" value="Search">
</form>
urls.py
url(r'^search/$', views.search, name='search'),
url(r'^results/(?P<pub_name>[\w]+)/$', views.search_pub, name='search_pub'),
views.py
def search(request):
return render(request, 'urlapp/search.html')
def search_pub(request, pub_name):
pubs = Publication.objects.all().filter(title__icontains=pub_name)
return render(request, 'app/results.html', {
'publications': pubs
})
models.py
class Publication(models.Model):
title = models.CharField(max_length=30)
je reçois l'erreur suivante quand j'ouvre la page de recherche http://localhost:8000/search/:
NoReverseMatch at /search/
Reverse for 'search_pub' with keyword arguments '{'pub_name': ''}' not found. 1 pattern(s) tried: ['results/(?P<pub_name>[\\w]+)/$']
J'ai vérifié que le regex est valide à l'aide du site pythex.
Si je vais à l'URL: http://localhost:8000/results/herald, j'obtiens les bons résultats.
Qu'est-ce qui me manque?
Valeur de 'pub_name' dans le modèle semble vide? – Rohan
Oui, je ne suis pas capable de comprendre pourquoi. – Animesh