Передумови:
Перш ніж відпрацювати сценарій цього підручника, ви повинні виконати наступні завдання.
- Встановіть Django версії 3+ на Ubuntu 20+ (бажано)
- Створіть проект Django
- Запустіть сервер Django, щоб переконатися, що він працює належним чином чи ні.
Налаштування програми Django:
Виконайте наступну команду, щоб створити програму Django з іменем queryapp.
$ python3 керувати.py startapp queryappВиконайте наступну команду, щоб створити користувача для доступу до бази даних Django. Якщо ви створили користувача раніше, тоді вам не потрібно запускати команду.
$ python3 керувати.py створюєкористувачаДодайте назву програми в INSTALLED_APP частина налаштування.py файл.
INSTALLED_APPS = [..
'queryapp'
]
Створіть папку з іменем шаблони всередині queryapp папку та встановіть шаблони розташування програми в ШАБЛОНИ частина налаштування.py файл.
ШАБЛОНИ = [.. .
'DIRS': ['/ home / fahmida / django_pro / queryapp / templates'],
.. .
,
]
Створіть модель для таблиці бази даних:
Відкрийте моделі.py файл із queryapp і додайте наступний скрипт, щоб визначити структуру продуктів таблиці. Продукт клас визначений для створення таблиці з іменем продуктів з назва, тип, марка, і ціна поля. Ось, ім'я, тип, і торгова марка поля зберігатимуть символьні дані, а ціна поле зберігатиме цілочисельні дані.
моделі.py
# Модуль імпорту моделейвід django.моделі імпорту db
# Визначте клас для створення таблиці товарів
клас Продукт (моделі.Модель):
ім'я = моделі.CharField (макс. Довжина = 100)
тип = моделі.CharField (макс. Довжина = 30)
бренд = моделі.CharField (макс. Довжина = 50)
ціна = моделі.IntegerField ()
Запустіть макеміграції команда створити нову міграцію на основі змін, внесених моделями.
$ python3 керувати.py makemigrations queryappЗапустіть мігрувати команда для виконання команд SQL і створення всіх таблиць у базі даних, визначених у моделі.py файл.
$ python3 керувати.py мігруватиЗмінити вміст адміністратор.py файл із таким змістом. Ось, моделі 'Класи товарівs реєструється за допомогою реєстрація () для відображення продуктів таблиці на інформаційній панелі адміністратора Django.
адміністратор.py
# Імпортувати модуль адміністраторавід django.внести імпорт адміністратора
# Імпорт моделі товару
від .моделі імпорту продукту
# Зареєструйте модель товару
адміністратор.сайт.зареєструвати (товар)
Створіть файл шаблону з іменем productList.html всередині queryapp / шаблони / з наступним сценарієм. Цей скрипт відображатиме всі дані продуктів таблиця у вигляді таблиці з вікном пошуку. Користувач зможе шукати певні записи з таблиці товарів за допомогою форми пошуку. для Цикл використовується в сценарії для ітерації даних, переданих з погляди.py файл.
productList.html
Підручник з Django QuerySet
Пошук продукту
Посвідчення особи | Ім'я | Бренд | Ціна |
---|---|---|---|
товар.id | товар.ім'я | товар.бренд | style = "text-align: right"> $ продукт.ціна |
Змінити вміст погляди.py файл із таким сценарієм. Назви моделі та шаблону визначені в ProductList клас. get_queryset () Метод класу визначений у сценарії для фільтрації даних на основі вмісту, поданого вікном пошуку шаблону. Продукт.об'єктів.всі () метод повертає всі записи файлу продуктів таблиця. запит.ОТРИМАТИ.клавіші () метод використовується в сценарії для перевірки будь-яких даних, поданих пошуковою формою. Якщо цей метод повертається правда, то запит.ОТРИМАТИ.get ('src') метод використовується для перевірки поданого значення порожнім чи ні. Якщо цей метод повертає непусте значення, тоді значення зберігатиметься у змінній, ключове слово, і він буде використовуватися для фільтрації даних на основі торгова марка і типу поля з продуктів таблиця.
погляди.py
# Імпортувати модуль ListViewвід django.погляди.загальний імпорт ListView
# Імпорт модуля продукту
від .моделі імпорту продукту
# Імпорт модуля Q
від django.дб.моделі імпорту Q
# Визначте клас для запитів даних
class ProductList (ListView):
# Визначте модель
модель = Товар
# Визначте шаблон
template_name = 'productList.html '
def get_queryset (self):
# Встановіть набір запитів за замовчуванням
queryset = Product.об'єктів.всі ()
# Перевірте, чи подано значення форми чи ні
якщо сам.запит.ОТРИМАТИ.клавіші ():
# Перевірте ключове слово пошуку
якщо сам.запит.ОТРИМАТИ.get ('src') != ":
ключове слово = само.запит.ОТРИМАТИ.get ('src')
# Встановіть набір запитів на основі ключового слова пошуку
queryset = Product.об'єктів.filter (Q (бренд = ключове слово.написання великих літер ()) | Q (type = ключове слово.використовувати великі літери ()))
повернути набір запитів
Змінити вміст URL-адреси.py файл із таким сценарієм. У сценарії "searchPro/ 'шлях визначений для виклику ProductList.as_view () метод, який надішле всі дані та відфільтровані дані продуктів таблицю до файлу шаблону.
URL-адреси.py
# Імпортувати модуль адміністраторавід django.внести імпорт адміністратора
# Імпортувати шлях та включити модуль
від django.шлях імпорту URL-адрес
# Імпортувати модуль SearchE Employee
з queryapp.перегляд імпорту ProductList
urlpatterns = [
# Визначте шлях для адміністратора
path ('admin /', адміністратор.сайт.URL-адреси),
# Визначте шлях до пошуку продукту
path ('searchPro /', ProductList.as_view ()),
Додайте записи в таблицю:
Відкрийте сторінку адміністрування Django і додайте кілька записів у продуктів таблиці, щоб застосувати набір запитів тоді. Тут було вставлено п’ять записів.
Усі записи продуктів із вікном пошуку відображатимуться у браузері після виконання наступної URL-адреси.
http: // localhost: 8000 / searchPro
Усі продукти з шампунем відображаються, якщо тип продукту, 'шампунь'буде здійснено пошук у вікні пошуку.
Сухе молоко з свіжий бренд буде відображатися, якщо бренд товару, 'свіжий'буде здійснено пошук у вікні пошуку.
Висновок:
Спосіб фільтрації даних простої таблиці бази даних за допомогою набору запитів описано в цьому посібнику. Дані можна фільтрувати різними способами. Читачі зрозуміють використання набору запитів для фільтрування або пошуку даних у браузері після прочитання цього посібника.