
eleday
Канал про Python, IT, программирование и нейросети
Статистика канала
requirements.txt, package.json, pom.xml, как устроены папки, какие модули есть
3. Найди точку входа
- Для веб-приложений: server.js, app.js, manage.py, app.py, wsgi.py
- Для консольных скриптов: if __name__ == '__main__', main()
4. "Потыкай"
Запусти проект, посмотри, что он делает, какие данные принимает, как на них отвечает, на что ругается
Главное убедись, что проект своим запуском ничего не сломает на твое компьютере
5. Используй инструменты IDE
Поиск по файлам, перемещение к объявлению функции, отладка, подсветка синтаксиса, иерархия вызовов
6. Посмотри на тесты
Если в проекте есть папки tests/, test/, spec/, посмотри на их содержимое. Они могут дать более чёткую картинку о том, что это вообще за проект
7. Спроси у ИИ
Для ускорения понимания можно:
- скинуть структуру проекта (tree) и спросить, где искать тот или иной функционал или объяснить архитектуру целиком
- скинуть непонятную функцию или файл и попросить прокомментировать
Читайте, это полезно)
@eleday.env
3. Готово
Как это работает в чеке
Почти вся логика авторизации прописана в app/routes/auth.html
На /oauth/yandex мы генерируем ссылку для авторизации и перенаправляем туда пользователя
@bp.route("/oauth/yandex")
def oauth_yandex():
# Собираем параметры для запроса
params = {
"response_type": "code",
"client_id": app.config["YANDEX_CLIENT_ID"],
"redirect_uri": app.config["YANDEX_REDIRECT_URI"],
"scope": "login:info"
}
# Собираем ссылку
auth_url = "https://oauth.yandex.ru/authorize?" + urlencode(params)
# Перенаправляем пользователя
return redirect(auth_url){}
После входа Яндекс сделает запрос на Redirect URI, который указан в настройках приложения тут
Обрабатываем /oauth/yandex/callback
@bp.route('/oauth/yandex/callback')
def oauth_callback():
# Получение кода из запроса
code = request.args.get('code')
# Обмен кода на токен
token_url = 'https://oauth.yandex.ru/token'
token_data = {
'grant_type': 'authorization_code',
'code': code,
'client_id': app.config['YANDEX_CLIENT_ID'],
'client_secret': app.config['YANDEX_CLIENT_SECRET']
}
response = requests.post(token_url, data=token_data)
token_info = response.json()
access_token = token_info.get('access_token')
# Получение информации о пользователе
user_info_url = 'https://login.yandex.ru/info'
headers = {'Authorization': f'OAuth {access_token}'}
user_response = requests.get(user_info_url, headers=headers)
user_data = user_response.json()
# Поиск или создание пользователя в базе
...
# Сохранение user_id в сессии
session["user_id"] = user.id
return redirect(url_for('main.index')){}
Яндекс дает код, который мы обмениваем на токен. А потом с помощью этого токена запрашиваем у Яндекса данные пользователя
Все, что получили, сохраняем в БД, а в сессию кладем id пользователя, чтобы дальше понимать, кто заходит на страницу
Следующий пост — в разработке
Навигация
.
├── app
│ ├── crud
│ │ └── users.py
│ ├── __init__.py
│ ├── models.py
│ ├── routes
│ │ ├── auth.py
│ │ ├── __init__.py
│ │ └── main.py
│ ├── static
│ │ └── css
│ │ ├── about.css
│ │ └── style.css
│ └── templates
│ ├── about.html
│ └── index.html
├── app.py
├── config.py
├── migrations
│ ├── alembic.ini
│ ├── env.py
│ ├── README
│ └── script.py.mako
├── README.md
└── requirements.txt
{}
1. app.py — точка входа
from app import app
if __name__ == '__main__':
app.run(debug=True){}
Из модуля app достаем объект приложения и запускаем его
2. app/ — модуль приложения
3. app/__init__.py — инициализация переменных
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from logging import Logger, getLogger
from config import Config
# Объект SQLAlchemy для работы с БД
db = SQLAlchemy()
# Объект для работы с миграциями
migrate = Migrate()
# Настройки логгирования
logger: Logger = getLogger(__name__)
# Создание объекта приложения
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
migrate.init_app(app, db)
# Регистрация ендпоинтов
from app.routes.main import bp as main_bp
from app.routes.auth import bp as auth_bp
app.register_blueprint(main_bp)
app.register_blueprint(auth_bp)
{}
4. app/models.py — модели для БД
5. app/routes — ендпоинты сайта
from flask import Blueprint, render_template
bp = Blueprint("main", __name__)
@bp.route("/")
def index():
return render_template("index.html"){}
Тут прописываются пути на сайте: какую страницу нужно показать по адресу site.com/about, а какую по site.com/login
6. app/crud — модуль для работы с БД
7. app/templates, app/static — папки с HTML-шаблонами и статичными файлами (стили, скрипты, картинки)
8. config.py — файл конфигураций
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
SECRET_KEY = os.getenv("SECRET_KEY", "")
SQLALCHEMY_DATABASE_URI = "sqlite:///app.db"
SQLALCHEMY_TRACK_MODIFICATIONS = False
if not Config.SECRET_KEY:
raise ValueError("SECRET_KEY is not set")
{}
Следующий пост — в разработке
Навигация
ssh <user>@<server_ip>{}
И теперь перед тобой терминал удаленного сервера
Как сделать ещё удобнее и безопаснее
1. Добавь SSH ключ
Это такой файл, который будет автоматически отправляться при подключении — не придётся вводить пароль. Так это ещё и безопаснее
В посте про настройку сервера рассказывал, как это сделать
2. Настрой ~/.ssh/config
В этом файле хранятся конфигурации подключений
# Создать файл, если не существует
touch ~/.ssh/config
# Открыть
nano ~/.ssh/config{}
Внутри должно быть что-то такое (если нет, можешь добавлять своё)
Host <имя>
Hostname <ip>
User <username>
Port <port>
Host eleday_server
Hostname 192.168.0.10
User leonid
Port 22{}
Host — имя хоста для подключения
Если задать, то можно вместо
ssh 192.168.0.10{}
Писать
ssh eleday_server{}
Hostname — айпи сервера
User — имя пользователя на сервере
Port — порт подключения
@eleday
nano имя_файла{}
У нано есть удобные горячие клавиши, список которых можно глянуть здесь
https://www.nano-editor.org/dist/latest/cheatsheet.html
Сам их до сих пор не выучил, поэтому решил сохранитьОтзывы канала
всего 9 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
eleday — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 4.7K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 16.5, количество отзывов – 9, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 2797.2 ₽, а за 34 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий