Книга «Изучаем Python»



Pdf көрінісі
бет238/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   234   235   236   237   238   239   240   241   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

t.entry_set.all()
[, the opening phase of the game, it's important t...>]
Чтобы получить данные через отношение внешнего ключа, используйте имя 
связанной модели, записанное в нижнем регистре, за которым следует символ 
подчеркивания и слово 
set

. Допустим, у вас имеются модели 
Pizza
и 
Topping

и модель 
Topping
связана с 
Pizza
через внешний ключ. Если ваш объект называется 
my_pizza
, для получения всех связанных с ним экземпляров 
Topping
используется 
выражение 
my_pizza.topping_set.all()
.
Мы будем использовать такой синтаксис при переходе к программированию стра-
ниц, которые могут запрашиваться пользователями. Оболочка очень удобна тогда, 
когда вы хотите проверить, что ваш код получает нужные данные. Если в оболочке 
код работает так, как задумано, можно ожидать, что он будет правильно работать 


394
Глава 18 • Знакомство с Django
и в файлах, которые вы создаете в своем проекте. Если код выдает ошибки или не 
загружает те данные, которые должен загружать, вам будет намного проще отладить 
его в простой оболочке, чем при работе с файлами, генерирующими веб-страницы. 
В книге мы не будем часто возвращаться к оболочке, но вам не стоит забывать 
о ней — это полезный инструмент, который поможет вам освоить синтаксис Django 
для работы с данными проекта.
ПРИМЕЧАНИЕ
При каждом изменении модели необходимо перезапустить оболочку, чтобы увидеть результаты 
этих изменений . Чтобы завершить сеанс работы с оболочкой, нажмите Сtrl+D; в Windows нажмите 
Ctrl+Z, а затем Enter .
УПРАЖНЕНИЯ
18-2 . Короткие записи: метод __str__() в модели Entry в настоящее время присоединяет 
многоточие к каждому экземпляру Entry, отображаемому Django на административном сай-
те или в оболочке . Добавьте в метод __str__() команду if, добавляющую многоточие только 
для записей, длина которых превышает 50 символов . Воспользуйтесь административным 
сайтом, чтобы ввести запись с длиной менее 50 символов, и убедитесь в том, что при ее 
просмотре многоточие не отображается .
18-3 . Django API: при написании кода для работы с данными проекта вы создаете за-
прос . Просмотрите документацию по созданию запросов к данным по адресу https://docs .
djangoproject .com/en/1 .8/topics/db/queries/ . Многое из того, что вы увидите, покажется вам 
новым, но эта информация пригодится вам, когда вы начнете работать над собственными 
проектами .
18-4 . Пиццерия: создайте новый проект с именем pizzeria, содержащий приложение pizzas . 
Определите модель Pizza с полем name, в котором хранятся названия видов пиццы (напри-
мер, «Гавайская» или «Четыре сыра») . Определите модель Topping с полями pizza и name . 
Поле pizza должно содержать внешний ключ к модели Pizza, а поле name должно позволять 
хранить такие значения, как «ананас» или «грибы» .
Зарегистрируйте обе модели на административном сайте . Используйте сайт для ввода на-
званий пиццы и дополнений . Изучите введенные данные в интерактивной оболочке .
Создание страниц: домашняя страница Learning Log
Обычно процесс создания веб-страниц в Django состоит из трех стадий: опреде-
ления URL, написания представлений и написания шаблонов. Сначала следует 
определить 
схемы
(patterns) URL. Схема URL описывает структуру URL-адреса 
и сообщает Django, на какие компоненты следует обращать внимание при сопо-
ставлении запроса браузера с URL-адресом на сайте, чтобы выбрать возвращаемую 
страницу.
Затем каждый URL-адрес связывается с конкретным 
представлением
— функция 
представления читает и обрабатывает данные, необходимые странице. Функция 
представления часто вызывает шаблон, который строит страницу, подходящую для 
передачи браузеру. Чтобы вы лучше поняли, как работает этот механизм, создадим 
домашнюю страницу для приложения Learning Log. Мы определим URL-адрес 
домашней страницы, напишем для него функцию представления и создадим про-
стой шаблон.


Начало работы над приложением
395
Так как мы сейчас всего лишь убеждаемся в том, что Learning Log работает, как по-
ложено, страница пока останется простой. Когда приложение будет завершено, вы 
можете заниматься его оформлением, сколько душе угодно; приложение, которое 
хорошо выглядит, но не работает, бессмысленно. Пока на домашней странице будет 
отображаться только заголовок и краткое описание.
Сопоставление URL
Пользователь запрашивает страницы, вводя URL-адреса в браузере и щелкая 
на ссылках, поэтому мы должны решить, какие URL-адреса понадобятся в нашем 
проекте. Начнем с URL домашней страницы: это базовый адрес, используемый для 
обращения к проекту. На данный момент базовый URL-адрес 
http://localhost:8000/
возвращает сайт, сгенерированный Django по умолчанию; он сообщает о том, что 
проект был создан успешно. Мы изменим домашнюю страницу, связав базовый 
URL-адрес с домашней страницей Learning Log.
В каталоге проекта 
learning_log
откройте файл 
urls .py
. Вы увидите в нем следу-
ющий код:
urls.py
 
from django.conf.urls import include, url
from django.contrib import admin
 
urlpatterns = [
 
url(r'^admin/', include(admin.site.urls)),
]
Первые две строки импортируют функции и модули, управляющие URL-адресами 
проекта и административным сайтом 

. В теле файла определяется переменная 
urlpatterns

. В файле 
urls .py
, представляющем проект в целом, переменная 
urlpatterns
включает наборы URL-адресов из приложений в проект. Код 

включает модуль 
admin.site.urls
, определяющий все URL-адреса, которые могут 
запрашиваться с административного сайта.
Добавим в этот файл URL-адреса 
learning_logs
:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
 
url(r'', include('learning_logs.urls', namespace='learning_ 
logs')), 
]
В точке 

добавляется строка включения модуля 
learning_logs.urls
. Эта строка 
включает аргумент 
namespace
, по которому URL-адреса 
learning_logs
можно от-
личить от других URL-адресов, которые могут появиться в проекте. Данная воз-
можность может оказаться чрезвычайно полезной по мере роста проекта.
Файл 
urls .py
по умолчанию находится в каталоге 
learning_log
; теперь нужно создать 
второй файл 
urls .py
в папке 
learning_logs
:


396

Достарыңызбен бөлісу:
1   ...   234   235   236   237   238   239   240   241   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет