Слайд 1Web-программирование
Лекция 5. python 3 (часть 3). Django
асист. каф. 308 Трутнева
Надежда Владимировна
тел: 8-926-880-12-76
почта: ntrutn@gmail.com
Слайд 5Обработка исключений
print("start")
try:
val = int(input("input number: "))
tmp
= 10 / val
print(tmp)
except Exception as e:
print("Error! " + str(e))
print("stop")
print(“start”)
val = int(input(“input \\ number: “))
tmp = 10 / val
print(tmp)
print(“stop”)
Вывод
start
input number: 0
Error!
stop
Вывод
start
input number: 0
Traceback (most recent call last):
File "F:/work/programming/python/devpractice/tmp.py", line 3, in
tmp = 10 / val
ZeroDivisionError: division by zero
Слайд 6Try … except
Вначале выполняется код, находящийся между операторами try и
except.
Если в ходе его выполнения исключения не произошло, то код
в блоке except пропускается, а код в блоке try выполняется весь до конца.
Если исключение происходит, то выполнение в рамках блока try прерывается и выполняется код в блоке except. При этом для оператора except можно указать, какие исключения можно обрабатывать в нем. При возникновении исключения, ищется именно тот блок except, который может обработать данное исключение.
Если среди except блоков нет подходящего для обработки исключения, то оно передается наружу из блока try. В случае, если обработчик исключения так и не будет найден, то исключение будет необработанным (unhandled exception) и программа аварийно остановится.
Слайд 7Try … except
print("start")
try:
val = int(input("input number: "))
tmp = 10 / val
print(tmp)
except(ValueError, ZeroDivisionError):
print("Error!")
print("stop")
Слайд 8Try … except
print("start")
try:
val = int(input("input number: "))
tmp = 10 / val
print(tmp)
except ValueError:
print("ValueError!")
except
ZeroDivisionError:
print("ZeroDivisionError!")
except:
print("Error!")
print("stop")
Слайд 9Try … except
Передаем подробную информацию о произошедшем исключении в код
внутри блока except.
rint("start")
try:
val = int(input("input number: "))
tmp = 10 / val
print(tmp)
except ValueError as ve:
print("ValueError! {0}".format(ve))
except ZeroDivisionError as zde:
print("ZeroDivisionError! {0}".format(zde))
except Exception as ex:
print("Error! {0}".format(ex))
print("stop")
Слайд 10Finally в исключениях
try:
val = int(input("input number: "))
tmp = 10 / val
print(tmp)
except:
print("Exception")
finally:
print("Finally
code")
Слайд 11else в исключениях
try:
f = open("tmp.txt", "r")
for
line in f:
print(line)
f.close()
except Exception
as e:
print(e)
else:
print("File was readed")
Слайд 12Принудительная генерация исключений
try:
raise Exception("Some exception")
except Exception as e:
print("Exception exception " + str(e))
Слайд 13Пользовательские исключения
class NegValException(Exception):
pass
try:
val = int(input("input positive
number: "))
if val < 0:
raise NegValException("Neg val: " + str(val))
print(val + 10)
except NegValException as e:
print(e)
Слайд 14Django
Проверяем установленную версию:
python -c "import django; print(django.get_version())”
Полезные ресурсы:
djangoproject.com
djbook.ru
Слайд 15Django
Создаем проект:
django-admin startproject mysite
Слайд 16Django
Создаем приложение:
python manage.py startapp polls
Слайд 17Запуск веб-сервера
python manage.py runserver
python manage.py runserver 8080
python manage.py runserver 107.10.23.2:8000
Слайд 18База данных
Базой данных (БД) называется организованная в соответствии с определенными
правилами и поддерживаемая в памяти компьютера совокупность сведений об объектах,
процессах, событиях или явлениях, относящихся к некоторой предметной области, теме или задаче. Она организована таким образом, чтобы обеспечить информационные потребности пользователей, а также удобное хранение этой совокупности данных, как в целом, так и любой ее части.
Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного вида. Каждая строка таблицы содержит данные об одном объекте (например, автомобиле, компьютере, клиенте), а столбцы таблицы содержат различные характеристики этих объектов - атрибуты (например, номер двигателя, марка процессора, телефоны фирм или клиентов).
Строки таблицы называются записями. Все записи таблицы имеют одинаковую структуру - они состоят из полей (элементов данных), в которых хранятся атрибуты объекта. Каждое поле записи содержит одну характеристику объекта и представляет собой заданный тип данных (например, текстовая строка, число, дата). Для идентификации записей используется первичный ключ. Первичным ключом называется набор полей таблицы, комбинация значений которых однозначно определяет каждую запись в таблице.
Слайд 19База данных
Строки таблицы называются записями. Все записи таблицы имеют одинаковую
структуру - они состоят из полей (элементов данных), в которых
хранятся атрибуты объекта. Каждое поле записи содержит одну характеристику объекта и представляет собой заданный тип данных (например, текстовая строка, число, дата). Для идентификации записей используется первичный ключ. Первичным ключом называется набор полей таблицы, комбинация значений которых однозначно определяет каждую запись в таблице.
Слайд 20База данных
Для работы с данными используются системы управления базами данных
(СУБД). Основные функции СУБД:
- определение данных (описание структуры баз данных);
-
обработка данных;
- управление данными.
Любая СУБД позволяет выполнять следующие операции с данными:
- добавление записей в таблицы;
удаление записей из таблицы;
обновление значений некоторых полей в одной или нескольких записях в таблицах БД;
- поиск одной или нескольких записей, удовлетворяющих заданному условию.
Слайд 21База данных
Для выполнения операций (добавление, удаление, обновление, поиск) применяется механизм
запросов. Результатом выполнения запросов является либо отобранное по определенным критериям
множество записей, либо изменения в таблицах. Запросы к базе формируются на специально созданном для этого языке, который так и называется «язык структурированных запросов» (SQL - Structured Query Language).
Под управлением данными обычно понимают защиту данных от несанкционированного доступа, поддержку многопользовательского режима работы с данными и обеспечение целостности и согласованности данных.
Слайд 22MVC (MTV)
Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения,
пользовательского интерфейса и управляющей логики на три отдельных компонента: модель,
представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.
Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя свое состояние.
Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели.
Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений
Слайд 23ORM
ORM (англ. Object-Relational Mapping, рус. объектно-реляционное отображение) — технология программирования,
которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая
«виртуальную объектную базу данных».
Для Python:
Django-ORM
SQLAlchemy
Слайд 24Модели
Модели отображают информацию о данных, с которыми вы работаете. Они
содержат поля и поведение ваших данных. Обычно одна модель представляет
одну таблицу в базе данных.
Каждая модель это класс унаследованный от django.db.models.Model.
Атрибут модели представляет поле в базе данных.
Django предоставляет автоматически созданное API для доступка к данных; смотрите Выполнение запросов.