-
Notifications
You must be signed in to change notification settings - Fork 0
/
django_command
221 lines (165 loc) · 12.3 KB
/
django_command
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
### создаем проект phoneProect в pycharm с виртуальным окружением
pip list # смотрим установленные пакеты
Package Version
---------- -------
pip 21.1.3
setuptools 56.0.0
UNKNOWN 0.0.0
### перед установкой django необходимо установить миниму 3 пакета asgiref, pytz, sqlparse
pip install d:\import\asgiref-3.4.0-py3-none-any.whl
pip install d:\import\pytz-2021.1-py2.py3-none-any.whl
pip install d:\import\sqlparse-0.4.1-py3-none-any.whl
pip install d:\import\Django-3.2.5.tar.gz # установка django в виртуальное окружение
pip list # смотрим установленные пакеты
Package Version
---------- -------
asgiref 3.4.0
Django 3.2.5
pip 21.1.3
pytz 2021.1
setuptools 56.0.0
sqlparse 0.4.1
UNKNOWN 0.0.0
django-admin # просмотр доступных команд django
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations # Данной командой мы создаем миграцию, изменения в модель (свой контроль версий моделей)
migrate # Данной командой мы применяем миграцию, изменения в модель (свой контроль версий моделей)
runserver
sendtestemail
shell # запуск интерпретатора питона для заполнения данных в sql
showmigrations
sqlflush
sqlmigrate # Данной командой мы просматриваем все изменения в таблице sql по конкретной миграции
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
# создаем проект phonebooke_site
django-admin startproject phonebooke_site
# переходим в директорию с ссозданым сайтом на django
cd phonebooke_site
# запускаем сервер по умолчанию http://127.0.0.1:8000/
manage.py runserver
или с настройками
python manage.py runserver 4000
python manage.py runserver 1.2.3.4:4000
# создаем приложение с именем phonebook
manage.py startapp phonebook
после чего прописываем маршут в urls.py и конфигурацию нашего приложения в settings.py (phonebooke_site)
### создаем модель в models.py
pip install d:\import\Pillow-8.3.1-cp39-cp39-win_amd64.whl # установка Pillow в виртуальное окружение
manage.py makemigrations # Данной командой мы создаем миграцию, изменения в модель (свой контроль версий моделей)
manage.py sqlmigrate phonebook 0001 # Данной командой мы просматриваем все изменения в таблице sql по миграции №0001
manage.py migrate # Данной командой мы применяем миграцию, изменения в модель (свой контроль версий моделей)
### заполнение базы данных в ручном режиме через консоль
## способ №1
manage.py shell # запуск интерпретатора питона для заполнения данных
from phonebook.models import Phonenumber # импортируем модель Phonenumber из файла models в папке phonebook
создадим переменную-объект в которую поместим все значения первой записи
number1 = Phonenumber(
subdivision = 'Отдел связи',
position = "Начальник отдела связи",
surname = "Маринченко",
name = "Андрей",
second_name = "Васильевич",
oficial_telephone = "115",
landline_telephone = "",
service_fax = "",
mobile_telephone = "+375-33-333-33-55"
)
тоже самое одной строкой:
number1 = Phonenumber(subdivision = 'Отдел связи', position = "Начальник отдела связи", surname = "Маринченко", name = "Андрей", second_name = "Васильевич", oficial_telephone = "115", landline_telephone = "", service_fax = "", mobile_telephone = "+375-33-333-33-55")
from django.db import connection # импортируем модуль соединения к базе данных
connection.queries # выведет в консоль записанные данные - база пуста
number1.save() # сохранит в базу sql созданную запись
connection.queries # выведет в консоль записанные данные - база внесла первую запись
number1.pk # выведет ID объекта записи, в нашем случае 1
## способ №2 (поэлементное внесение данных)
number2 = Phonenumber()
number2.subdivision = 'Отдел связи'
number2.position = "Заместитель начальника отдела связи"
number2.surname = "Кудрявцев"
number2.name = "Руслан"
number2.second_name = "Владимирович", # если оставить запятую то в БД запись попадет как список из двух значений
number2.oficial_telephone = "456", # если оставить запятую то в БД запись попадет как список из двух значений
number2.landline_telephone = "8(0214)74-04-33"
number2.service_fax = "8(0214)74-04-33"
number2.mobile_telephone = "+375-29-222-20-23"
number2.save()
## способ №3 (внесение данных сразу в базу данных)
number3 = Phonenumber.objects.create(subdivision = 'Отдел связи', position = "Старший офицер отдела связи", surname = "Буко", name = "Евгений", second_name = "Иванович", oficial_telephone = "455", landline_telephone = "", service_fax = "", mobile_telephone = "+375-29-891-58-33")
number3.pk
### просмотр всех записей в базе данных
Phonenumber.objects.all() # покажет сколько объектов (строк) создано в БД модели Phonenumber
для преобразования вида вывода этих же данных (например по должности), в models.py прописывается функция __str__(self)
после чего необходимо выйти из shell используя команду exit() и подключится заново (так изменения вступят в силу):
manage.py shell # запуск интерпретатора питона для заполнения данных
from phonebook.models import Phonenumber # импортируем модель Phonenumber из файла models в папке phonebook
Phonenumber.objects.all() # выведет сведения о базе данных соотнося объект (строку) по должностям
numbers = Phonenumber.objects.all() # создадим переменную в которую поместим нашу БД
для вывода интерисующих нас столбцов создадим цикл (вывод подразделения должности и фамилии)
for item in numbers:
print(item.subdivision, item.position, item.surname)
## вывод данных БД в которых значения отдельных граф одинаковы, например все записи по отделу связи
Phonenumber.objects.filter(subdivision='Отдел связи')
## вывод данных по конкретной уникальной записи
Phonenumber.objects.get(pk=3) # работает
Phonenumber.objects.get(subdivision='Отдел связи') # ошибка т.к. отдел связи не одна запись
#### ОБНОВЛЕНИЕ записи в БД
number2 = Phonenumber.objects.get(pk=2) # обратимся к второму объекту (строке) и присвоим ее значнение переменной number2
number2.second_name = 'Владимирович' # присваеваем новое значение в разделе отчество
number2.save() # сохраняем изменения
number2.oficial_telephone = "456" # присваеваем новое значение в разделе отчество
number2.save() # сохраняем изменения
#### УДАЛЕНИЕ записи в БД
number7 = Phonenumber.objects.get(pk=7) # обратимся к второму объекту (строке) и присвоим ее значнение переменной number7
number7.delete() # удаление записи из БД
# вывод данных в алфавитном порядке по столбцу
Phonenumber.objects.order_by('second_name') # вывод данных в алфавитном порядке по столбцу отчество
Phonenumber.objects.order_by('-second_name') # вывод данных в обратном алфавитном порядке по столбцу отчество
Phonenumber.objects.exclude(second_name = 'Владимирович') # выводит все данные за исключением тех у которы отчетсво =
#### РАБОТА С ШАБЛОНАМИ
в папке нашей модели "phonebook" создаем папку "templates"
в папке "phonebook/templates" создаем папку "phonebook"
#### Работа с админкой
manage.py createsuperuser
### запуск сервера
C:\pyProject\Django-sites\venv\Scripts\python C:\pyProject\Django-sites\first\phonebooke_site\manage.py runserver
C:\pyProject\Django-sites\venv\Scripts\python C:\pyProject\Django-sites\first\phonebooke_site\manage.py makemigrations # Данной командой мы создаем миграцию, изменения в модель (свой контроль версий моделей)
manage.py sqlmigrate phonebook 0001 # Данной командой мы просматриваем все изменения в таблице sql по миграции №0001
C:\pyProject\Django-sites\venv\Scripts\python C:\pyProject\Django-sites\first\phonebooke_site\manage.py migrate # Данной командой мы применяем миграцию, изменения в модель (свой контроль версий моделей)
#### Работа с mySQL
устанавливаем модули в указанной последовательности для подключения к mySQL
сначала устанавливаем второстепенные модули
C:\pyProject\Django-sites\venv\Scripts\python -m pip install d:\import\for_mysql_connector\lz4-3.1.3-cp39-cp39-win_amd64.whl
C:\pyProject\Django-sites\venv\Scripts\python -m pip install d:\import\for_mysql_connector\zstandard-0.15.2-cp39-cp39-win_amd64.whl
python -m pip install d:\import\for_mysql_connector\dnspython-2.1.0-py3-none-any.whl
python -m pip install d:\import\for_mysql_connector\six-1.16.0-py2.py3-none-any.whl
python -m pip install d:\import\for_mysql_connector\decorator-5.0.9-py3-none-any.whl
python -m pip install d:\import\for_mysql_connector\gssapi-1.6.14-cp39-cp39-win_amd64.whl
python -m pip install d:\import\for_mysql_connector\protobuf-3.17.3-cp39-cp39-win_amd64.whl
устанавливаем модуль подключения к mySQL connector
python -m pip install d:\import\for_mysql_connector\mysql_connector_python-8.0.26-cp39-cp39-win_amd64.whl
удаление пакетов
python -m pip uninstall mysql_connector
python -m pip uninstall mysql_connector-python
python -m pip install d:\import\cryptography-3.4.7-cp36-abi3-win_amd64.whl
python -m pip install d:\import\mysqldb_wrapper-0.10.5-py3-none-any.whl
#работа через командную строку
cd c:\Python\Python39
python C:\pyProject\Django-sites\first\phonebooke_site\manage.py runserver
#подключение статики
python C:\pyProject\Django-sites\first\phonebooke_site\manage.py collectstatic