Skip to content

Commit 82ac153

Browse files
committed
запускам версию генератора паролей v1.1.0 на Python, Flask, HTML, CSS, JavaScript
1 parent 8ea6db8 commit 82ac153

File tree

5 files changed

+461
-174
lines changed

5 files changed

+461
-174
lines changed

README.md

Lines changed: 120 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,136 @@
11
# Генератор паролей
22

3+
*Текущая версия: 1.1.0*
4+
35
[![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
46

5-
**Текущая версия: 1.0.0 (Стабильная)**
7+
## Описание
68

7-
Этот проект представляет собой простой генератор паролей, написанный на HTML.
9+
Простая веб-программа для генерации безопасных паролей с различными настройками.
10+
Генерирует пароли заданной длины, с возможностью включения заглавных букв, цифр и специальных символов.
811

9-
## Описание
10-
Скрипт позволяет генерировать случайные пароли заданной длины,
11-
с возможностью включения в них: латинских строчных букв, латинских заглавных букв, цифр и спецсимволов.
12+
## Технологии:
13+
14+
* *Бэкенд:* Python, Flask
15+
* *Генерация паролей:* Модули `random` и `string` из стандартной библиотеки Python.
16+
* *Фронтенд:* HTML, CSS, JavaScript (использует Fetch API для взаимодействия с бэкендом).
17+
18+
## Что нового:
19+
1. Создан password_generator.py (бэкенд) с основной логикой генерации паролей.
20+
21+
2. Создан app.py с использованием Flask, который будет управлять всем:
22+
* Отдавать index.html пользователю.
23+
* Принимать запросы от index.html (длина, типы символов).
24+
* Вызывать функции из password_generator.py.
25+
* Возвращать сгенерированный пароль обратно в index.html.
26+
27+
Перед запуском: Убедитесь, что у вас установлен Flask. Если нет, выполните:
28+
```pip install Flask```
29+
30+
3. Обновлен index.html (фронтенд). Изменен JavaScript так, чтобы он отправлял запрос на наш Flask-сервер.
31+
* Добавлено поле errorMessageDiv для отображения ошибок от сервера.
32+
* Функция generatePassword теперь использует fetch API для отправки POST-запроса на /generate_password.
33+
* Данные отправляются в формате JSON.
34+
* Обрабатывается ответ сервера: если есть ошибка, она показывается пользователю, иначе — отображается пароль.
35+
* Немного улучшен CSS для лучшего отображения настроек.
1236

1337
## Как запустить:
14-
1. Скачайте и сохраните файл `index.html`.
38+
1. Скачайте и сохраните архив с программой и запустите файл `index.html`.
1539
2. Теперь вы можете открыть этот файл в браузере, чтобы увидеть работающий генератор паролей.
16-
Сейчас этот index.html работает полностью на стороне клиента (в браузере)
1740

18-
## Технологии:
19-
*
20-
* Модуль `random`
41+
Важные замечания для app.py:
42+
43+
Папка templates: Flask по умолчанию ищет HTML-файлы в подпапке templates. Вам нужно будет создать эту папку и переместить туда ваш index.html. Скрипт app.py пытается сделать это автоматически при первом запуске, но лучше сделать вручную, чтобы избежать ошибок.
44+
```pip install Flask``` : Убедитесь, что Flask установлен.
45+
__version__: Наш password_generator.py должен содержать переменную __version__ = "1.1.0".
46+
47+
1. Сохраните password_generator.py и app.py в одной директории.
48+
2. Создайте папку templates в этой же директории.
49+
3. Переместите ваш index.html внутрь папки templates.
50+
4. Откройте терминал в этой директории.
51+
5. Запустите сервер: python app.py
52+
6. Откройте браузер и перейдите по адресу http://127.0.0.1:5000/ (или http://localhost:5000/).
53+
Теперь ваш index.html должен работать интерактивно, общаясь с Python-скриптом через Flask!
54+
55+
## 1. Структура папок:
56+
57+
Убедитесь, что ваши файлы расположены следующим образом:
58+
59+
ваш_проект/
60+
├── password_generator.py
61+
├── app.py
62+
└── templates/
63+
└── index.html
64+
65+
* `ваш_проект/` - это корневая директория вашего проекта.
66+
* `password_generator.py` и `app.py` лежат прямо в корне.
67+
* Создайте папку `templates` в корне.
68+
* Переместите ваш `index.html` внутрь этой папки `templates/`.
69+
70+
2. Установка Flask (если еще не установлено):
71+
72+
Откройте терминал (командную строку) и выполните команду:
73+
74+
pip install Flask
75+
76+
77+
Если у вас установлен Python, то `pip` должен быть доступен. Если возникнут ошибки, возможно, Python или pip установлены некорректно, или пути к ним не прописаны в переменной среды PATH.
78+
79+
3. Запуск сервера:
80+
81+
* Откройте терминал:
82+
* Windows: Найдите "Командная строка" (Command Prompt) или "PowerShell".
83+
* macOS/Linux: Откройте стандартное приложение "Терминал".
84+
85+
* Перейдите в директорию вашего проекта:
86+
Используйте команду `cd` (change directory). Например, если ваш проект находится на рабочем столе в папке `password-generator`:
87+
88+
cd Desktop/password-generator
89+
90+
(Путь может отличаться в зависимости от того, где вы сохранили проект).
91+
92+
* Запустите Python-скрипт `app.py`:
93+
Убедитесь, что вы находитесь в той же директории, где лежат `app.py` и папка `templates`. Теперь введите команду:
94+
95+
```python app.py```
96+
97+
* Важно: Если у вас на компьютере установлено несколько версий Python, и по умолчанию запускается не та, к которой привязан `pip`, то может потребоваться использовать `python3 app.py` или `py app.py` (на Windows). Проще всего использовать `python` или `python3`, если вы уверены, что они указывают на нужную версию.
98+
99+
Что должно произойти после запуска:
100+
101+
Вы увидите сообщения в терминале, похожие на эти:
102+
103+
* Serving Flask app 'app' (lazy loading)
104+
* Environment: production
105+
WARNING: This is a development server. Do not use it in a production deployment.
106+
Use a production WSGI server instead.
107+
* Debug mode: on
108+
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
109+
* Running on http://127.0.0.1:5000/
110+
111+
Файл index.html перемещен в папку 'templates'.
112+
113+
114+
4. Открытие в браузере:
115+
116+
* Возьмите одну из ссылок, которые появились в терминале, обычно это:
117+
`http://127.0.0.1:5000/` (или `http://localhost:5000/`)
118+
* Откройте ваш веб-браузер (Chrome, Firefox, Safari, Edge и т.д.).
119+
* Вставьте эту ссылку в адресную строку браузера и нажмите Enter.
120+
121+
Вы должны увидеть ваш генератор паролей, который теперь будет работать, обращаясь к Python-бэкенду!
122+
123+
Если что-то пошло не так:
124+
125+
* "ModuleNotFoundError: No module named 'Flask'": Значит, Flask не установлен. Попробуйте `pip install Flask` еще раз.
126+
* "ModuleNotFoundError: No module named 'password_generator'": Значит, `app.py` не может найти ваш файл `password_generator.py`. Убедитесь, что они лежат в одной директории, и вы запускаете `app.py` из этой директории.
127+
* "FileNotFoundError: [Errno 2] No such file or directory: 'templates/index.html'": Значит, `index.html` не находится в папке `templates/`. Проверьте структуру папок.
128+
* Ошибки в браузере: Если браузер выдает ошибки, проверьте консоль ошибок в браузере (обычно открывается через F12) и сообщения в терминале, где запущен `app.py`. Там может быть более подробная информация.
129+
21130

22131
## Пример использования:
23132
Использует строчные буквы.
24-
Введите длину пароля (от 8 до 256): 10
133+
Введите длину пароля (от 8 и более).
25134
Использовать цифры?
26135
Использовать ЗАГЛАВНЫЕ буквы?
27136
Использовать спецсимволы?

app.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# app.py
2+
3+
from flask import Flask, request, jsonify, render_template, send_from_directory
4+
import os
5+
import password_generator # Импортируем наш скрипт
6+
7+
app = Flask(__name__)
8+
app.config['SECRET_KEY'] = 'your_secret_key_here' # Нужен для безопасности, можно придумать любую строку
9+
10+
# Получаем путь к директории, где находится app.py
11+
# Это нужно, чтобы Flask знал, где искать index.html
12+
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
13+
14+
@app.route('/')
15+
def index():
16+
"""
17+
Отдает пользователю главную страницу (index.html).
18+
"""
19+
return render_template('index.html') # Flask автоматически ищет файлы в папке 'templates'
20+
21+
@app.route('/generate_password', methods=['POST'])
22+
def handle_generate_password():
23+
"""
24+
Принимает POST-запрос с параметрами генерации, вызывает
25+
password_generator.py и возвращает результат.
26+
"""
27+
try:
28+
data = request.get_json() # Получаем JSON из запроса
29+
length = data.get('length', 12)
30+
include_uppercase = data.get('include_uppercase', True)
31+
include_numbers = data.get('include_numbers', True)
32+
include_symbols = data.get('include_symbols', True)
33+
34+
# Валидация длины (можно вынести в password_generator.py, но для простоты здесь)
35+
if not isinstance(length, int) or length < 8 or length > 128:
36+
return jsonify({"error": "Длина пароля должна быть числом от 8 до 128."}), 400 # Bad Request
37+
38+
# Вызываем функцию генерации из нашего модуля
39+
password, error = password_generator.generate_password(
40+
length=length,
41+
include_uppercase=include_uppercase,
42+
include_numbers=include_numbers,
43+
include_symbols=include_symbols
44+
)
45+
46+
if error:
47+
# Если есть ошибка от генератора
48+
return jsonify({"error": error}), 400 # Bad Request
49+
50+
# Если все успешно
51+
return jsonify({"password": password}), 200 # OK
52+
53+
except Exception as e:
54+
# Обработка непредвиденных ошибок
55+
print(f"Ошибка в /generate_password: {e}")
56+
return jsonify({"error": "Произошла внутренняя ошибка сервера."}), 500 # Internal Server Error
57+
58+
# --- Дополнительно: отдаем статические файлы (CSS, JS) ---
59+
# Flask обычно ищет их в папке 'static'.
60+
# Если вы хотите, чтобы index.html сам брал CSS/JS,
61+
# вам нужно будет поместить их в папку 'static'
62+
# и изменить пути в <head> и перед </body> в index.html.
63+
# Пока оставим CSS внутри <style> для простоты.
64+
65+
if __name__ == '__main__':
66+
# Создаем папку templates, если она не существует
67+
if not os.path.exists('templates'):
68+
os.makedirs('templates')
69+
70+
# Перемещаем index.html в папку templates
71+
# Это важно, так как render_template ищет файлы там
72+
if os.path.exists('index.html'):
73+
os.rename('index.html', os.path.join('templates', 'index.html'))
74+
print("Файл index.html перемещен в папку 'templates'.")
75+
else:
76+
print("Ошибка: Файл index.html не найден! Создайте его в корневой директории.")
77+
78+
# Запускаем Flask-приложение
79+
# debug=True позволяет автоматически перезапускать сервер при изменениях кода
80+
# host='0.0.0.0' делает сервер доступным извне (не только с localhost)
81+
app.run(debug=True, host='0.0.0.0', port=5000)

0 commit comments

Comments
 (0)