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



Pdf көрінісі
бет217/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   213   214   215   216   217   218   219   220   ...   238
Байланысты:
2 5343781172763690906

ПРИМЕЧАНИЕ

При  каждом  изменении  модели  необходимо  перезапустить  оболочку,  чтобы  увидеть  результаты 

этих изменений . Чтобы завершить сеанс работы с оболочкой, нажмите С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    Глава 18  •  Знакомство с Django

urls.py

"""Определяет схемы URL для learning_logs."""



from django.conf.urls import url

from . import views



urlpatterns = [

    # Домашняя страница

    url(r'^$', views.index, name='index'),



]

Чтобы было понятно, с какой версией 

urls .py

 мы работаем, в начало файла добавля-

ется строка документации . Затем импортируется функция 

url


, она необходима 

для связывания URL с представлениями . Также импортируется модуль 

views

 ; 


точка приказывает Python импортировать представления из каталога, в котором 

находится текущий модуль 

urls .py

. Переменная 

urlpatterns

 в этом модуле пред-

ставляет собой список страниц, которые могут запрашиваться из приложения 

learning_logs

 .

Схема URL представляет собой вызов функции 



url()

 с тремя аргументами . 

Первый аргумент содержит регулярное выражение. Django ищет в 

urlpatterns

 

регулярное выражение, совпадающее со строкой запрашиваемого URL. Таким 



образом, регулярное выражение должно определять схему адреса, которую будет 

искать Django.

Возьмем регулярное выражение 

r'^$'


. Символ 

r

 сообщает Python, что после-



дующая строка должна интерпретироваться без дополнительной обработки, 

а апострофы указывают, где начинается и заканчивается регулярное выражение. 

Символ 

^

 обозначает начало строки, а символ 



$

 обозначает ее конец. В целом 

это выражение приказывает Python искать URL-адрес, не содержащий ничего 

между началом и концом URL. Python игнорирует базовый URL-адрес проекта 

(http://localhost:8000/), так что пустое регулярное выражение совпадает с базовым 

URL-адресом. Любой другой URL-адрес не будет соответствовать этому выраже-

нию, и Django вернет страницу с ошибкой, если запрашиваемый URL не соответ-

ствует ни одной из существующих схем URL.

Второй аргумент 

url()


  определяет вызываемую функцию представления. Ког-

да запрашиваемый URL-адрес соответствует регулярному выражению, Django 

вызывает 

views.index

 (мы напишем эту функцию представления в следующем 

разделе). Третий аргумент определяет 

index

 для этой схемы URL, чтобы на нее 



можно было ссылаться в других частях кода. Каждый раз, когда потребуется 

предоставить ссылку на домашнюю страницу, мы будем использовать это имя 

вместо URL.



Достарыңызбен бөлісу:
1   ...   213   214   215   216   217   218   219   220   ...   238




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

    Басты бет