Bha*_*ran 2 python django django-views
我在数据库中有很多书.搜索数据库不返回任何内容(空查询集).
在菜单中:
<form name="myform" method="POST" action="{% url 'search' %}">
{% csrf_token %}
<input type="text" name="search" placeholder="Search" />
</form>
Run Code Online (Sandbox Code Playgroud)
views.py,
def search(request):
if request.method == 'POST':
book_name = request.POST.getlist('search')
try:
status = Add_prod.objects.filter(bookname__icontains=book_name)
#Add_prod class contains a column called 'bookname'
except Add_prod.DoesNotExist:
status = None
return render(request,"search.html",{"books":status})
else:
return render(request,"search.html",{})
Run Code Online (Sandbox Code Playgroud)
我的模板文件,
{% if books %}
<a href="{% url 'buy_book' pk=books.pk %}">
<!--Upon successful search book image with hyperlink appears -->
<img src="{{books.image.url}}" alt="No Image"></a>
<p>{{books.bookname}}</p>
<p>Rs.{{books.price}}</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我想在这里添加几件事......
1)我认为搜索结果应该是方法GET而不是POST.您可以参考此链接以查看何时使用POST以及何时使用GET
<form name="myform" method="GET" action="{% url 'search' %}">
// see if you need csrf_token here when this is GET request. Your homework
Run Code Online (Sandbox Code Playgroud)
2)views.py
def search(request):
if request.method == 'GET': # this will be GET now
book_name = request.GET.get('search') # do some research what it does
try:
status = Add_prod.objects.filter(bookname__icontains=book_name) # filter returns a list so you might consider skip except part
return render(request,"search.html",{"books":status})
else:
return render(request,"search.html",{})
Run Code Online (Sandbox Code Playgroud)
3)django模板应该是现在
{% if books %}
{% for each_book in books %} // books is list here so pick each element using for loop
<a href="{% url 'buy_book' pk=each_book.pk %}">
<!--Upon successful search book image with hyperlink appears -->
<img src="{{each_book.image.url}}" alt="No Image"></a>
<p>{{each_book.bookname}}</p>
<p>Rs.{{each_book.price}}</p>
{% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
这应该工作正常.
还要确保在db中有一些数据可以在搜索时获取一些结果!
| 归档时间: |
|
| 查看次数: |
8459 次 |
| 最近记录: |