Цель этой статьи — предоставить пошаговое руководство по созданию веб-сайта на Python, подчеркивая преимущества этого языка в веб-разработке. Python известен своей простотой и читаемостью, а также обширной экосистемой библиотек и фреймворков, что делает его идеальным выбором для создания веб-приложений.
Краткий обзор шагов
- Подготовка к разработке
- Создание базовой структуры проекта
- Разработка функционала сайта
- Стиль и соблюдение стандартов
- Тестирование и отладка
- Развертывание сайта
Подготовка к разработке
1.1 Установка Python
Для работы вам понадобится последняя версия Python. Инструкции по установке можно найти на официальном сайте python.org. Убедитесь, что добавили Python в PATH при установке.
$ python --version
Python 3.x.x
1.2 Выбор веб-фреймворка
Существует несколько популярных веб-фреймворков для Python, но наиболее известные — Flask и Django.
-
Flask — это микрофреймворк, который предоставляет минималистический подход к веб-разработке. Он гибок и позволяет разработчикам выбирать, какие компоненты использовать.
-
Django — более комплексный фреймворк, который включает множество встроенных инструментов и готовых решений. Это позволяет быстро запускать проекты, но может потребовать некоторого времени на изучение.
1.3 Установка необходимых библиотек
Для начала создайте виртуальное окружение, чтобы избежать конфликтов с зависимостями.
$ python -m venv venv
$ source venv/bin/activate # для Windows используйте venv\Scripts\activate
Установим Flask, если выбрали его:
(venv) $ pip install Flask
Можно создать requirements.txt для отслеживания зависимостей:
(venv) $ pip freeze > requirements.txt
Создание базовой структуры проекта
2.1 Организация файловой структуры
Рекомендуется следующая базовая структура проекта:
my_project/
├── app/
│ ├── __init__.py
│ ├── routes.py
│ └── templates/
│ └── index.html
├── venv/
├── requirements.txt
├── config.py
└── run.py
2.2 Создание главного приложения
Создайте файл run.py и добавьте следующий код:
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
Для Flask создайте файл app/__init__.py:
from flask import Flask
def create_app() -> Flask:
"""
Создает экземпляр Flask приложения.
:return: Flask application instance
"""
app = Flask(__name__)
with app.app_context():
# Регистрация маршрутов
from . import routes
return app
Разработка функционала сайта
3.1 Настройка маршрутизации
Создайте файл app/routes.py и определите маршруты:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index() -> str:
"""
Главная страница сайта.
:return: HTML контент главной страницы
"""
return render_template('index.html')3.2 Работа с шаблонами
Создайте шаблон app/templates/index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Главная страница</title>
</head>
<body>
<h1>Добро пожаловать на сайт!</h1>
</body>
</html>
3.3 Интеграция базы данных
Для интеграции базы данных используем SQLAlchemy. Установите библиотеку:
(venv) $ pip install flask_sqlalchemy
Добавьте настройки в app/__init__.py:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app() -> Flask:
"""
Создает экземпляр Flask приложения.
:return: Flask application instance
"""
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db.init_app(app)
with app.app_context():
# Регистрация маршрутов и моделей
from . import routes, models
return app
Создайте модель в app/models.py:
from . import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), nullable=False, unique=True)
def __repr__(self) -> str:
return f'<User {self.username}>'
Стиль и соблюдение стандартов
4.1 Применение PEP 8
PEP 8 — это стиль кодирования для Python. Используйте инструменты проверки, такие как flake8.
(venv) $ pip install flake8
(venv) $ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
4.2 Комментирование функций
Используйте docstrings для комментирования функций:
def add(a: int, b: int) -> int:
"""
Функция складывает два числа.
:param a: Первое число
:param b: Второе число
:return: Сумма чисел
"""
return a + b
Тестирование и отладка
5.1 Введение в тестирование
Тестирование помогает обеспечить качество кода и избежать ошибок. В Python используйте библиотеку unittest.
5.2 Примеры юнит-тестов
Создайте файл tests/test_basic.py:
import unittest
from app import create_app
class BasicTests(unittest.TestCase):
def setUp(self) -> None:
self.app = create_app()
self.client = self.app.test_client()
def test_index(self) -> None:
response = self.client.get('/')
self.assertEqual(response.status_code, 200)
self.assertIn(b'Добро пожаловать на сайт!', response.data)
if __name__ == '__main__':
unittest.main()
Развертывание сайта
6.1 Выбор хостинга
Популярные платформы для Python приложений: Heroku, AWS, DigitalOcean.
6.2 Развертывание на Heroku
Для развертывания на Heroku следуйте следующим шагам:
- Установите Heroku CLI:
$ curl https://cli-assets.heroku.com/install.sh | sh
- Войдите в Heroku и создайте приложение:
$ heroku login
$ heroku create my-app
- Подготовьте файл
Procfile:
web: gunicorn run:app
- Установите Gunicorn:
(venv) $ pip install gunicorn
- Пушьте код в Heroku:
$ git add .
$ git commit -m "Initial commit"
$ git push heroku master
Заключение
Обобщение основных шагов
Мы рассмотрели все важные этапы создания веб-сайта на Python с нуля: от настройки окружения до развертывания.
Призыв к действию
Попробуйте создать свой сайт на Python, следуя этому руководству. Это отличный способ повысить свои навыки и разобраться в современных технологиях веб-разработки.
Дополнительные ресурсы
Эти ресурсы помогут углубить ваши знания и поддержат вас в дальнейшем обучении.