Окремий вміст будь-якого веб-сайту зазвичай отримується користувачами за допомогою пошуку Google. Однак, якщо ця опція пошуку впроваджена на веб-сайті, то користувачі можуть легко знайти бажаний вміст на веб-сайті, не використовуючи пошук Google ... Ще однією перевагою додавання опції пошуку на веб-сайті є те, що розробник може правильно керувати результатами пошуку. Це означає, що він може контролювати, який вміст сайту відображатиметься чи ні. Цей підручник покаже процес впровадження основного пошуку на сайті Django.
Передумови:
Перш ніж відпрацювати сценарій цього підручника, ви повинні виконати наступні завдання:
- Встановіть Django версії 3+ на Ubuntu 20+ (бажано)
- Створіть проект Django
- Запустіть сервер Django, щоб переконатися, що він працює належним чином чи ні.
Налаштування програми Django:
Виконайте наступну команду, щоб створити програму Django з назвою searchapp.
$ python3 керувати.py startapp searchchappВиконайте наступну команду, щоб створити користувача для доступу до бази даних Django. Якщо ви створили користувача раніше, тоді вам не потрібно запускати команду.
$ python3 керувати.py створюєкористувачаДодайте назву програми в частину налаштувань INSTALLED_APP.файл py.
INSTALLED_APPS = [..
'searchchapp'
]
Створіть папку з іменами шаблони всередині папки searchchapp і встановіть розташування шаблону програми в розділі ШАБЛОНИ налаштувань.файл py.
ШАБЛОНИ = [.. .
'DIRS': ['/ home / fahmida / django_pro / searchapp / templates'],
.. .
,
]
Створення моделей:
Змініть моделі.py з таким сценарієм. Тут було визначено два класи для створення двох реляційних таблиць із назвами типів книг та книг. Поле типу таблиці книг - це зовнішній ключ, який з’явиться у таблиці типів книг.
моделі.py
# Імпортувати необхідні модулівід django.моделі імпорту db
від django.URL-адреси зворотного імпорту
# Створіть модель книги типу gor
клас Книжковий тип (моделі.Модель):
btype = моделі.CharField (max_length = 100, унікальний = True)
клас Мета:
впорядкування = ('btype',)
# Створити модель gor book
клас Книга (моделі.Модель):
book_name = моделі.CharField (макс. Довжина = 150)
ім'я автора = моделі.CharField (макс. Довжина = 150)
тип = моделі.ForeignKey (Тип книги, on_delete = моделі.КАСКАД)
ціна = моделі.FloatField ()
публікація = моделі.CharField (макс. Довжина = 100)
клас Мета:
ordering = ('book_name',)
def __str __ (self):
повернути себе.ім'я книги
def get_url (self):
повернути реверс ('book_detail', args = [self.id])
Створення шаблонів для пошуку:
Для створення функції пошуку, показаної в цьому посібнику, потрібно три файли HTML. Це book_list.html, book_detail.html і пошук.html. Список_книг.html відобразить всі записи з таблиці книг. Детальна інформація про книгу.html відображатиме деталі певної книги. Пошук.html покаже результат пошуку після подання форми пошуку.
список_книг.html
book_detail.html
книга.ім'я книги
Автор: книга.ім'я автора
Тип: type
Публікація: книга.публікація
Ціна: $ книга.ціна
пошук.html
% якщо запит%
% з результатами.зарахувати як загальні_результати%
Знайдено total_results результат total_results | pluralize
% endwith%
% для c у результатах%
c.ім'я книги
c.ім'я автора
% порожній%
Нічого не знайдено.
% endfor%
% endif%
Створити функції перегляду:
Змінити подання.py з таким сценарієм. У сценарії визначено три функції. Функція book_list () відображатиме book_list.файл HTML. Функція book_detail () відображатиме book_detail.html. Функція search () здійснить пошук записів на основі даних, поданих пошуковою формою, і відобразить результат у пошуку.html.
погляди.py
# Імпортувати необхідні модулівід django.ярлики імпорту візуалізації, get_object_or_404
від .моделі імпорту книг, типів книг
від django.дб.моделі імпорту Q
# Визначте функцію для відображення всіх книг
def book_list (запит):
book = Книга.об'єктів.всі ()
повернути візуалізацію (запит, 'book_list.html ', ' book ': book)
# Визначте функцію для відображення конкретної книги
def book_detail (запит, ідентифікатор):
book = get_object_or_404 (Book, id = id)
типи = Тип книги.об'єктів.всі ()
t = типи.get (id = book.типу.ідентифікатор)
повернути візуалізацію (запит, 'book_detail.html ', ' book ': book,' type ': t.btype)
# Визначте функцію пошуку книги
пошук пошуку (запит):
результати = []
за запитом.метод == "ОТРИМАТИ":
запит = запит.ОТРИМАТИ.get ('пошук')
якщо запит == ":
query = 'Немає'
результати = Книга.об'єктів.фільтр (Q (ім'я книги__контенти = запит) | Q (ім'я автора__контенти = запит) | Q (ціна__контенти = запит))
повернути візуалізацію (запит, 'пошук.html ', ' запит ': запит,' результати ': результати)
Встановіть шляхи для функцій перегляду викликів:
Змініть URL-адреси.py проекту Django з наступним сценарієм. У сценарії визначено чотири шляхи. Шлях 'admin /' використовується для відкриття адміністративної інформаційної панелі Django. Порожній шлях (") використовується для виклику функції book_list (). '
URL-адреси.py
# Імпортувати модуль адміністраторавід django.внести імпорт адміністратора
# Імпорт модуля шляху
від django.шлях імпорту URL-адрес
# Імпорт подання
з переглядів імпорту searchchapp
# Визначте шляхи
urlpatterns = [
path ('admin /', адміністратор.сайт.URL-адреси),
шлях (", перегляди.book_list, name = 'book_list'),
path ('/', перегляди.book_detail, name = 'book_detail'),
path ('пошук /', перегляди.search, name = 'пошук'),
]
Запустіть програму з браузера:
Виконайте таку команду, щоб запустити сервер Django.
$ python3 керувати.py runserverЗапустіть наступну URL-адресу з будь-якого браузера, щоб відобразити список книг із таблиці.
http: // localhost: 8000
Якщо користувач клацне на посилання, “PHP і MySQL для динамічних веб-сайтів”, тоді деталі цієї книги з’являться у браузері.
Якщо користувач здійснює пошук за словом, фізикою в браузері, тоді в браузері відображатиметься такий результат пошуку.
Висновок:
Додаток Django з базовою опцією пошуку було реалізовано в цьому посібнику за допомогою таблиць баз даних. Нові розробники Django зможуть впровадити функцію пошуку на своєму веб-сайті після прочитання цього посібника.