Добавлен: 29.03.2023
Просмотров: 155
Скачиваний: 1
СОДЕРЖАНИЕ
1.1 Начало истории программирования
1.2 Структурное и модульное программирование
1.3 Объектно-ориентированное программирование
1.4 Компонентное программирование
1.5 Применение структурных и объектно-ориентированных методов программирования
1.6 Новые направления в программировании
ЧАСТЬ 3. Разработка веб-приложения на основе фреймворка Django.
Язык и его интерпретатор (Zend Engine) разрабатываются группой энтузиастов в рамках проекта с открытым кодом. Проект распространяется под собственной лицензией, несовместимой с GNU GPL.
В области веб-программирования, в частности серверной части, PHP — один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET).
Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств и дополнительных модулей для разработки веб-приложений. Основные из них:
- автоматическое извлечение POST- и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
- взаимодействие с большим количеством различных систем управления базами данных через дополнительные модули (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO), Redis;
- автоматизированная отправка HTTP-заголовков;
- работа с HTTP-авторизацией;
- работа с cookies и сессиями;
- работа с локальными и удалёнными файлами, сокетами;
- обработка файлов, загружаемых на сервер;
- работа с XForms.
В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемуся на данных поисковых систем, в мае 2016 года PHP находился на 6 месте среди языков программирования. К крупнейшим сайтам, использующим PHP, относятся Facebook, Wikipedia и др.
Входит в LAMP — распространённый набор программного обеспечения для создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).
ЧАСТЬ 3. Разработка веб-приложения на основе фреймворка Django.
Django (Джанго) - свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка - DRY (англ. Don't repeat yourself). Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений. Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.
Суть проекта заключается в добавлении статей с административной панели и отображения их на странице статьи.
Веб-приложение разрабатывается в современной среде разработки JetBrains PyCharm 2019.2.4. Прежде чем переходить к разработке, на операционной системе должен быть предустановлен Python, в моём случае ОС Windows 10 Pro (Рис 1.)
Рис 1. Версия Python 3.8
А также должны быть подключены следующие модули, которые отображены на рис 2.
Рис 2. Отображение модулей подключенные в проекте.
Рис 3. Структура проекта
И так, при помощи команды startproject создалась директория Blog, сейчас ее рассмотрим:
- manage.py: Скрипт, который позволяет вам взаимодействовать с проектом Django.
- blog/__init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python.
- blog/settings.py: Настройки/конфигурация проекта.
- blog/urls.py: Конфигурация URL-ов для вашего проекта Django.
- blog/wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов.
- blog/asgi.py: Точка входа вашего проекта для ASGI-совместимых веб-серверов.
Рассмотрим теперь главный конфигурационный файл settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) //путь к главной директории проекта
SECRET_KEY = 'lly9fw$$09a43wc^6s6qw#s$sz821&@kz(p7jo6yj#moju*=6a' //секретный ключ проекта
DEBUG = True //диагностика проекта на
ALLOWED_HOSTS = [] // описание хоста, где лежит будет прослушиваться данный проект
INSTALLED_APPS = [ //подключение приложений
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'webexamle.apps.WebexamleConfig',
'startapp.apps.StartappConfig',
]
MIDDLEWARE = [ // описание зависимостей
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'Blog.urls' //главный маршрутный файл
TEMPLATES = [ //шаблоны проекта
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'Blog.wsgi.application'
DATABASES = { // база данных
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'ru'
TIME_ZONE = 'Europe/Moscow'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_URL = '/static/'
После создания проекта и настройки файла settings.py требуется создать супер-пользователя для управления административной панелью, используя команду python manage.py createsuperuser. Затем предлагается сгенерировать логин, почтовый адрес и пароль администратора административной панели управления сайтом.
Рис 4. Генерация супер-пользователя.
После всех этих манипуляция вводим команду python manage.py migrate, для того чтобы создались таблицы в БД.
Рис 5. Созданные таблицы в БД.
Теперь перейдем к файлу urls.py, в каталоге blog. Файл urls.py, в данном каталоге является главным маршрутным файлом.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls), //админская часть
path('', include('webexamle.urls')), // главная страница блога
path('news/',include('startapp.urls')), // страница новостей
]
Итак, в данном проекте создано два приложения, одно из них это startapp.
Рис 6. Описание приложения startapp
Как видно на рис 2. Приложения в себя включает файл models.py, для генераций таблиц в БД, в приложении используется база данных – Sqlite3. Рассмотрим поподробнее файл models.py, а также затроним файлы в папке migrations.
Содержимое файла models.py:
from django.db import models
class Articles(models.Model):
title = models.CharField(max_length=120) // поле для заголовка статьи
post = models.TextField() // описание статьи
date = models.DateTimeField() // дата публикации
def __str__(self):
return self.title
Тем самым обозначили нужные поля для дальнейшего заполнения. После этого используем команду python manage.py migrate, после этой команды python manage.py makemigrations. После данных операций у нас в приложении появились файл 0001_initial.py:
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Articles',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=120)),
('post', models.TextField()),
('date', models.DateTimeField()),
],
),
]
Как видно в описании, это поля в БД на Рис 7.
Рис 7. Подключение Bootstrap стилей к проекту.
Bootstrap настраивается в главном конфигурационном файле, а также прописывается уже путь к файлу уже в файле в нашем случае в главном файле wraper.html:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Личный блог</title>
<link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}"/>
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>{% include "blog/includes/some_html.html" %}</h1>
{% block content %}
{% endblock %}
<p>
<a href="/" class="btn btn-success btn-lg">Главная страница</a>
<a href="/news" class="btn btn-primary btn-lg">Новости »</a>
<a href="/contact" class="btn btn-info btn-lg">Контакты</a>
</p>
</div>
</div>
<div class="container">
<img src="{% static "image/mercedes-amg-cls-53-cls-53-amg-mercedes-benz.jpg" %}" class="img-thumbnail">
<hr>
© Все права защищены 2020
</div>
</body>
</html>
После этого предстоит настроить подключение к шаблонам:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return render(request,'blog/homepage.html')
# Create your views here.
def contact(request):
return render(request,'blog/basic.html', {'values':['Если у вас остались вопросы задавайте мне по телефону, ', '(926)729-23-98','email: oleg.shavernev21993@gmail.com']})
Рис 8. Страница новостей
Рис 9. Главная страница
Рис 9. Страница контактов.
Рис 10. Логи сервера.
Рис 11. Страница статьи.
Заключение
В данной курсовой работе были проанализированы разные подходы к разработке ПО, а также произведен анализ по современным языкам программирования. Было мною написано веб-приложение, для отображение нового функционала, который можно использовать при помощи фреймворка Django.