diff --git a/example.py b/example.py index 8f455cf..00ed92a 100644 --- a/example.py +++ b/example.py @@ -1,14 +1,10 @@ -from flask import Flask, render_template, request +import json +import uuid +from flask import Flask, redirect, render_template, request app = Flask(__name__) -users = [ - {'id': 1, 'name': 'mike'}, - {'id': 2, 'name': 'mishel'}, - {'id': 3, 'name': 'adel'}, - {'id': 4, 'name': 'keks'}, - {'id': 5, 'name': 'kamila'} -] +users = json.load(open("./users.json", 'r')) @app.route('/') @@ -17,9 +13,10 @@ def hello_world(): @app.route('/users/') -def get_users(): +def users_get(): + with open("./users.json", "r") as f: + users = json.load(f) term = request.args.get('term', '') - print(users) filtered_users = [user for user in users if term in user['name']] return render_template( 'users/index.html', @@ -29,22 +26,58 @@ def get_users(): @app.post('/users') -def post_users(): - return 'Users', 302 +def users_post(): + user_data = request.form.to_dict() + errors = validate(user_data) + if errors: + return render_template( + 'users/new.html', + user=user_data, + errors=errors, + ) + id = str(uuid.uuid4()) + user = { + 'id': id, + 'name': user_data['name'], + 'email': user_data['email'] + } + users.append(user) + with open("./users.json", "w") as f: + json.dump(users, f) + return redirect('/users', code=302) -@app.route('/courses/') -def courses(id): - return f'Course id: {id}' +@app.route('/users/new') +def users_new(): + user = {'name': '', 'email': ''} + errors = {} + return render_template( + 'users/new.html', + user=user, + errors=errors, + ) @app.route('/users/') def show_user(id): - user = { - "id": id, - "name": f"user-{id}" - } + with open("./users.json", "r") as f: + users = json.load(f) + user = next(user for user in users if id == str(user['id'])) return render_template( 'users/show.html', user=user, ) + + +@app.route('/courses/') +def courses(id): + return f'Course id: {id}' + + +def validate(user): + errors = {} + if not user['name']: + errors['name'] = "Can't be blank" + if not user['email']: + errors['email'] = "Can't be blank" + return errors diff --git a/templates/users/index.html b/templates/users/index.html index 7f62c26..85dd5a1 100644 --- a/templates/users/index.html +++ b/templates/users/index.html @@ -8,16 +8,11 @@ - - {% for user in users %} - - - - - {% endfor %} -
- {{ user.id }} - - {{ user.name }} -
+Добавить пользователя + +
    + {% for user in users %} +
  • Имя: {{ user.name }}, Email: {{ user.email}}
  • + {% endfor %} +
{% endblock %} diff --git a/templates/users/new.html b/templates/users/new.html new file mode 100644 index 0000000..60bd902 --- /dev/null +++ b/templates/users/new.html @@ -0,0 +1,27 @@ +

Новый пользователь

+
+
+
+ + {% if errors['name'] %} +
{{ errors['name'] }}
+ {% endif %} +
+
+ + {% if errors['email'] %} +
{{ errors['email'] }}
+ {% endif %} +
+
+ +
+
+ +

Назад к списку пользователей

diff --git a/templates/users/show.html b/templates/users/show.html index 9693d1d..f33add9 100644 --- a/templates/users/show.html +++ b/templates/users/show.html @@ -1,2 +1,4 @@ -
id = {{ user.id }}
-
nickname = {{ user.name }}
+
Имя = {{ user.name }}
+
Email = {{ user.email }}
+ +

Назад к списку пользователей

diff --git a/users.json b/users.json new file mode 100644 index 0000000..9d4f450 --- /dev/null +++ b/users.json @@ -0,0 +1,7 @@ +[ + { "id": 1, "name": "mike" }, + { "id": 2, "name": "mishel" }, + { "id": 3, "name": "adel" }, + { "id": 4, "name": "keks" }, + { "id": 5, "name": "kamila" } +]