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



Pdf көрінісі
бет211/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   207   208   209   210   211   212   213   214   ...   238
Байланысты:
2 5343781172763690906

Рис. 18.1. Пока все работает правильно

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

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

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

приложение, которое будет выполнять бульшую часть работы в нашем проекте. 

Другое приложение для управления учетными записями пользователей будет до-

бавлено в главе 19.

К этому моменту команда 

runserver

 должна продолжать работу в терминальном 

окне, которое вы открыли ранее. Откройте новое терминальное окно (или вкладку) 

и перейдите в каталог, содержащий 

manage .py

. Активизируйте виртуальную среду 

и выполните команду 

startapp


:

learning_log$ source ll_env/bin/activate

(ll_env)learning_log$ python manage.py startapp learning_logs

(ll_env)learning_log$ ls



db.sqlite3  learning_log  learning_logs  ll_env  manage.py

(ll_env)learning_log$ ls learning_logs/



admin.py  __init__.py  migrations  models.py  tests.py  views.py

Команда 


startapp

 имя_приложения приказывает Django создать инфраструктуру, 

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

найдете в нем новый подкаталог с именем 

learning_logs

 . Откройте этот каталог, 

чтобы увидеть, какие файлы были созданы Django . Самые важные файлы в этом 

каталоге — 

models .py

admin .py



 и 

views .py

.

Мы воспользуемся файлом 



models .py

 для определения данных, которыми нуж-

но управлять в нашем приложении. К файлам 

admin .py

 и 

views .py



 мы вернемся 

позднее.



386    Глава 18  •  Знакомство с Django

Определение моделей

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

создает набор тем в своем журнале. Каждая запись, которую он сделает, будет при-

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

необходимо хранить временну

́ю метку каждой записи, чтобы пользователь знал, 

когда эта запись была создана.

Откройте файл 

models .py

 и просмотрите его текущее содержимое:

models.py

from django.db import models

# Создайте здесь свои модели.

Модуль с именем 

models

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



свои модели. Модель сообщает Django, как работать с данными, которые будут хра-

ниться в приложении. С точки зрения кода модель представляет собой обычный 

класс; она содержит атрибуты и методы, как и все остальные классы, рассматри-

вавшиеся нами ранее. Вот как выглядит модель тем обсуждения, которые будут 

сохраняться пользователями:

from django.db import models

class Topic(models.Model):

    """Тема, которую изучает пользователь"""

    text = models.CharField(max_length=200)



    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):



        """Возвращает строковое представление модели."""

        return self.text

Мы создали класс с именем 

Topic


, наследующий от 

Model


 — родительского класса, 

включенного в Django и определяющего базовую функциональность модели. Класс 

Topic

 содержит всего два атрибута: 



text

 и 


date_added

.

Атрибут 



text

 содержит данные 

CharField

 — блок данных, состоящий из символов, 

то есть текст . Атрибуты 

CharField

 могут использоваться для хранения неболь-

ших объемов текста: имен, заголовков, названий городов и т. д. При определении 

атрибута 

CharField

 необходимо сообщить Django, сколько места нужно зарезер-

вировать для него в базе данных. В данном случае задается максимальная длина 

max_length

, равная 200 символам; этого должно быть достаточно для хранения 

большинства имен тем.

Атрибут 


date_added

 содержит данные 

DateTimeField

 — блок данных для хранения 

даты и времени . Аргумент 

auto_add_now=True

 приказывает Django автоматически 

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

создает новую тему.



Достарыңызбен бөлісу:
1   ...   207   208   209   210   211   212   213   214   ...   238




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

    Басты бет