Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3❤2
- Управление сеансами: Flask-Login позволяет управлять сеансами пользователей, включая вход, выход и проверку аутентификации.
- Интеграция с Flask: Flask-Login полностью интегрирован во Flask, что позволяет использовать все возможности Flask вместе с функциями аутентификации.
- Поддержка аутентификации: Flask-Login поддерживает различные методы аутентификации, включая аутентификацию по паролю и токенам.
- Безопасность: Flask-Login обеспечивает безопасную аутентификацию, что важно для создания надежных веб-приложений.
from flask import Flask, request, redirect, url_for, render_template
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user
app = Flask(__name__)
app.secret_key = 'your_secret_key'
# Конфигурация Flask-Login
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
# Мок-база данных пользователей
users = {'user1': {'password': 'password1'}}
class User(UserMixin):
def __init__(self, id):
self.id = id
@login_manager.user_loader
def load_user(user_id):
return User(user_id)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if username in users and users[username]['password'] == password:
user = User(username)
login_user(user)
return redirect(url_for('protected'))
return 'Invalid username or password'
return render_template('login.html')
@app.route('/protected')
@login_required
def protected():
return 'Logged in as: ' + current_user.id
@app.route('/logout')
@login_required
def logout():
logout_user()
return 'Logged out'
if __name__ == '__main__':
app.run(debug=True)
Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2
- Автоматическая генерация миграций: Flask-Migrate позволяет автоматически генерировать миграции на основе изменений в моделях базы данных.
- Интеграция с Alembic: Flask-Migrate интегрирует Alembic, что позволяет использовать все возможности Alembic для управления миграциями.
- Поддержка множества баз данных: Flask-Migrate поддерживает множество реляционных баз данных, включая SQLite, PostgreSQL, MySQL и другие.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
# Инициализация миграций
# flask db init
# flask db migrate -m "Initial migration."
# flask db upgrade
Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥1
Что выдаст код выше❔
Anonymous Quiz
14%
partial match
3%
['c', 'd', 'e']
24%
partial match: ['c', 'd', 'e']
17%
no match
36%
match!
6%
x, y, *z = "abcde"
🤔9🤓3🤨2👍1
Если мы ожидаем, что match должен перейти ко второму кейсу, потому что где-то произошла неявная распаковка, то это ошибка.
Потому что структура данных, с которой работает match, — это конкретный кортеж: ('a', 'b', 'c', 'd', 'e').
И первый кейс точно совпадает с этой структурой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥4
- Быстрое создание административных интерфейсов: Flask-Admin позволяет быстро создавать административные интерфейсы для управления данными в ваших веб-приложениях.
- Поддержка множества баз данных: Flask-Admin поддерживает множество реляционных баз данных, включая SQLite, PostgreSQL, MySQL и другие.
- Кастомизация: Flask-Admin позволяет легко кастомизировать административные интерфейсы, включая изменение шаблонов, стилей и функциональности.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
app.config['SECRET_KEY'] = 'your_secret_key'
db = SQLAlchemy(app)
# Создание модели
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
# Создание административного интерфейса
admin = Admin(app, name='Admin Panel', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))
if __name__ == '__main__':
app.run(debug=True)
Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍3🔥1
- Поддержка множества кэш-бэкендов: Flask-Caching поддерживает множество кэш-бэкендов, включая простой кэш, Redis, Memcached и другие.
- Кэширование функций и представлений: Flask-Caching позволяет кэшировать результаты функций и представлений, что помогает улучшить производительность приложения.
- Конфигурация и настройка: Flask-Caching позволяет легко настроить кэш, включая время жизни кэша, размер кэша и другие параметры.
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
# Конфигурация кэша
app.config['CACHE_TYPE'] = 'SimpleCache'
cache = Cache(app)
@app.route('/')
@cache.cached(timeout=50) # Кэширование на 50 секунд
def index():
return 'Hello, World!'
Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2
- Автоматическая документация: Flask-RESTX автоматически генерирует документацию для вашего API в формате Swagger/OpenAPI, что упрощает использование и тестирование API.
- Поддержка ресурсов и методов: Flask-RESTX поддерживает создание ресурсов и методов, что позволяет легко определить структуру вашего API.
- Поддержка аутентификации и авторизации: Flask-RESTX поддерживает аутентификацию и авторизацию, что позволяет обеспечить безопасность вашего API.
from flask import Flask
from flask_restx import Api, Resource
app = Flask(__name__)
api = Api(app)
@api.route('/hello')
class HelloWorld(Resource):
def get(self):
return {'message': 'Hello, World!'}
if __name__ == '__main__':
app.run(debug=True)
Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥2
- Отладка ошибок: Flask-DebugToolbar позволяет легко отслеживать и анализировать ошибки в вашем приложении.
- Мониторинг запросов и ответов: Flask-DebugToolbar предоставляет подробную информацию о каждом запросе и ответе, что помогает вам лучше понять, что происходит в вашем приложении.
- Анализ производительности: Flask-DebugToolbar позволяет анализировать производительность вашего приложения, включая время выполнения запросов и использование ресурсов.
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False
# Инициализация DebugToolbar
toolbar = DebugToolbarExtension(app)
@app.route('/')
def index():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
@app.route('/error')
def error():
# Пример ошибки
1 / 0
return 'This should not be displayed'Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥2
Таким образом, сырые строки позволяют избежать необходимости использования двойных обратных слешей при работе с путями файлов, что делает код более читаемым и удобным для работы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2🔥2
🤓9🤔6👍1🤨1
В принте сначала выводим b — 3, а потом через запятую выводим *a.
* рядом с итерируемым объектом как бы распаковывает его в выводе. Поэтому список [1, 2] превратится просто в 1 2.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥2
- Управление сеансами: Flask-Session позволяет управлять сеансами, включая хранение данных сеанса на стороне сервера.
- Поддержка различных хранилищ: Flask-Session поддерживает множество хранилищ для данных сеанса, включая Redis, Memcached, файлы и другие.
- Безопасность: Flask-Session обеспечивает безопасное хранение данных сеанса, что важно для создания надежных веб-приложений.
from flask import Flask, session
from flask_session import Session
app = Flask(__name__)
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_PERMANENT'] = False
app.config['SESSION_USE_SIGNER'] = True
app.config['SECRET_KEY'] = 'your_secret_key'
# Инициализация Flask-Session
Session(app)
@app.route('/')
def index():
session['key'] = 'value'
return 'Session set!'
@app.route('/get')
def get():
return session.get('key', 'Not set')
if __name__ == '__main__':
app.run(debug=True)
Официальный сайт
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥1
1.Поиск последнего вхождения подстроки:
text = "Hello, world! Welcome to Python."
result = text.rfind("o")
print(result) # Вывод: 25
2.Поиск подстроки в определенном диапазоне:
text = "Hello, world! Welcome to Python."
result = text.rfind("o", 10, 20)
print(result) # Вывод: 13
3.Обработка случая, когда подстрока не найдена:
text = "Hello, world! Welcome to Python."
result = text.rfind("z")
print(result) # Вывод: -1
Метод string.rfind() полезен, когда вам нужно найти позицию последнего вхождения подстроки в строку, и может быть использован в различных сценариях программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥1
- Описательная статистика: Statsmodels предоставляет инструменты для вычисления основных статистических показателей, таких как среднее, медиана, стандартное отклонение и другие.
- Статистические тесты: Statsmodels поддерживает множество статистических тестов, включая t-тест, F-тест, хи-квадрат и другие.
- Модели линейной регрессии: Statsmodels позволяет создавать и анализировать модели линейной регрессии, включая оценку параметров и статистическую значимость.
- Временные ряды: Statsmodels предоставляет инструменты для анализа временных рядов, включая ARIMA, SARIMA и другие модели.
import statsmodels.api as sm
import pandas as pd
# Создание данных
data = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [2, 3, 5, 7, 11]
})
# Описательная статистика
desc_stats = data.describe()
print(desc_stats)
Официальный сайт
GitHub
Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥3🤯1
Операторы (например,
+, -, *, and, or, not и другие) — это части языка, которые не представлены как объекты в памяти.Аннотации типов, такие как
list[str], не создают объекты во время выполнения программы, а используются лишь для статического анализа кода.def func(x: int) -> str:
return str(x)
Имена переменных — это просто ссылки на объекты, а не сами объекты. Переменная указывает на объект в памяти, но сама по себе не объект.
x = 42 # 'x' — это имя, а не объект
print(type(x)) # Объектом является число 42, а не имя 'x'
Ключевые слова Python (
if, else, while, for, def, class, return и т.д.) — это зарезервированные слова, которые используются для управления логикой программы, и они не являются объектами.print(type(if)) # Ошибка: ключевое слово не объект
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥4