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



Pdf көрінісі
бет216/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   212   213   214   215   216   217   218   219   ...   238
admin.py

from django.contrib import admin

from learning_logs.models import Topic, Entry

admin.site.register(Topic)

admin.site.register(Entry)

Вернитесь на страницу http://localhost/admin/, и вы увидите раздел 

Entries

 в катего-

рии 

learning_logs



. Щелкните на ссылке 

Add


 для 

Entries


 или щелкните на 

Entries


 и вы-

берите вариант 

Add

. На экране должен появиться раскрывающийся список для выбора 



темы, для которой создается запись, и текстовое поле для ввода записи. Выберите 

в раскрывающемся списке вариант 

Chess

 и добавьте запись. При выборе ссылки 



Save

 

вы вернетесь к основной административной странице. Здесь проявляются преимуще-



ства использования формата 

text[:50]

 в качестве строкового представления каждой 

записи; работать с несколькими записями в административном интерфейсе намного 

удобнее, если вы видите только часть записи вместо ее полного текста.

Создайте вторую запись для темы 

Chess

 и одну запись для темы 



Rock

 

Climbing



, чтобы 

у нас были исходные данные для дальнейшей разработки Learning Log.

Интерактивная оболочка  Django

Введенные данные можно проанализировать на программном уровне в интерактив-

ном терминальном сеансе. Эта интерактивная среда, называемая оболочкой (shell) 

Django, прекрасно подходит для тестирования и диагностики проекта. Пример 

сеанса в интерактивной оболочке:

(ll_env)learning_log$ python manage.py shell

>>> from learning_logs.models import Topic



>>> Topic.objects.all()

[, ]




Начало работы над приложением    393

Команда 


python

 

manage.py



 

shell


 (выполняемая в активной виртуальной среде) 

запускает интерпретатор Python, который может использоваться для работы с ин-

формацией в базе данных проекта. В данном случае мы импортируем модель 

Topic


 

из модуля 

learning_logs.models

 . Затем метод 

Topic.objects.all()

 используется 

для получения всех экземпляров модели 

Topic


; возвращаемый список называется 

итоговым набором (queryset).

Содержимое итогового набора перебирается точно так же, как и содержимое спи-

ска. Например, просмотр идентификаторов, назначенных каждому объекту темы, 

выполняется так:

>>> topics = Topic.objects.all()

>>> for topic in topics:

...   print(topic.id, topic)

...


1 Chess

2 Rock Climbing

Итоговый набор сохраняется в 

topics


, после чего выводится атрибут 

id

 каждого 



объекта 

topic


 и его строковое представление. Мы видим, что теме 

Chess


 присвоен 

идентификатор 1, а 

Rock

 

Climbing



 присвоен идентификатор 2.

Зная идентификатор конкретного объекта, можно получить этот объект и проана-

лизировать содержащиеся в нем атрибуты. Просмотрим значения 

text


 и 

date_added

 

для темы 



Chess

:

>>> t = Topic.objects.get(id=1)



>>> t.text

'Chess'


>>> t.date_added

datetime.datetime(2015, 5, 28, 4, 39, 11, 989446, tzinfo=)

Также можно просмотреть записи, относящиеся к конкретной теме. Ранее мы 

определили атрибут 

topic

 для модели 



Entry

. Он был экземпляром 

ForeighKey

представляющим связь между записью и темой. Django может использовать эту 



связь для получения всех записей, относящихся к некоторой теме:

>>> 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 

для работы с данными проекта.



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




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

    Басты бет