1. 程式人生 > >Django 建立用戶的視圖(搜索 + 表單)

Django 建立用戶的視圖(搜索 + 表單)

開始 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 建立用戶的視圖(搜索 + 表單)