Django 建立用戶的視圖(搜索 + 表單)
阿新 • • 發佈:2019-04-27
開始 esc 登錄 req 比例 urn .get site arc
在web應用上,有兩個關於搜索獲得巨大成功的故事:Google和Yahoo,通過搜索,他們建立了幾十億美元的業務。幾乎每個網站都有很大的比例訪問量來自這兩個搜索引擎。甚至,一個網站是否成功取決於其站內搜索的質量。因此,在我們這個網站添加搜索功能看起來好一些。
在網站添加搜索功能:
開始,在URLconf (website.urls )添加搜索視圖。添加類似 path(‘search/‘,views.search) 設置URL模式。
下一步,在視圖模塊(website.views )中寫這個 search 視圖:
from django.db.models import Q
from django.shortcuts import render_to_response
from models import Book
def search(request):
query = request.GET.get(‘q‘, ‘‘)
if query:
qset = (
Q(title__icontains=query) |
Q(authors__first_name__icontains=query) |
Q(authors__last_name__icontains =query)
)
results = Book.objects.filter(qset).distinct()
else:
results = []
return render_to_response("books/search.html", { # 註意此處的文件路徑
"results": results,
"query": query
})
現在仍然沒有這個搜索視圖的模板,可以如下實現:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" >
<html lang="en">
<head>
<title>Search{% if query %} Results{% endif %}</title>
</head>
<body>
<h1>Search</h1>
<form action="." method="GET">
<label for="q">Search: </label>
<input type="text" name="q" value="{{ query|escape }}">
<input type="submit" value="Search">
</form>
{% if query %}
<h2>Results for "{{ query|escape }}":</h2>
{% if results %}
<ul>
{% for book in results %}
<li>{{ book|escape }}</l1>
{% endfor %}
</ul>
{% else %}
<p>No books found</p>
{% endif %}
{% endif %}
</body>
</html>
查詢界面:
此時http://127.0.0.1:8000/admin/(管理員界面)和http://127.0.0.1:8000/search/ (查詢界面)均可以登錄
Django 建立用戶的視圖(搜索 + 表單)