私はDjangoで簡単な検索フォームを作成しようとしています。ここで私はこれまで持っているものです。NoReverseMatch:テンプレートから表示にパラメータを渡すことができません。
形式:
<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)
私は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]+)/$']
私は正規表現がサイトpythexを使用して有効であることを確認しました。
URL:http://localhost:8000/results/heraldに行った場合、正しい結果が得られます。
私には何が欠けていますか?
値が空のようですか? – Rohan
はい、私は理由を理解することができません。 – Animesh