Skip to content

Commit

Permalink
Merge pull request #3 from hexlet-components/post-form
Browse files Browse the repository at this point in the history
init lesson post-form
  • Loading branch information
sgmdlt authored Aug 14, 2024
2 parents 84868e3 + 515bb43 commit 67ae564
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 33 deletions.
71 changes: 52 additions & 19 deletions example.py
Original file line number Diff line number Diff line change
@@ -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('/')
Expand All @@ -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',
Expand All @@ -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/<id>')
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/<id>')
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/<id>')
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
19 changes: 7 additions & 12 deletions templates/users/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,11 @@
<input type="submit" value="Search" />
</form>

<table>
{% for user in users %}
<tr>
<td>
{{ user.id }}
</td>
<td>
{{ user.name }}
</td>
</tr>
{% endfor %}
</table>
<a href="/users/new">Добавить пользователя</a>

<ul>
{% for user in users %}
<li>Имя: <a href="/users/{{user.id}}">{{ user.name }}</a>, Email: {{ user.email}}</li>
{% endfor %}
</ul>
{% endblock %}
27 changes: 27 additions & 0 deletions templates/users/new.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<h1>Новый пользователь</h1>
<hr>
<form action="/users" method="post">
<div>
<label for="user-nickname">
Имя:
<input type="text" id="user-name" name="name" value="{{ user.name }}">
</label>
{% if errors['name'] %}
<div>{{ errors['name'] }}</div>
{% endif %}
</div>
<div>
<label for="user-email">
Email:
<input type="text" id="user-email" name="email" value="{{ user.email }}">
</label>
{% if errors['email'] %}
<div>{{ errors['email'] }}</div>
{% endif %}
</div>
<div>
<button type="submit" title="Submit form">Добавить</button>
</div>
</form>

<p><a href="/users">Назад к списку пользователей</a></p>
6 changes: 4 additions & 2 deletions templates/users/show.html
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
<div>id = {{ user.id }}</div>
<div>nickname = {{ user.name }}</div>
<div>Имя = {{ user.name }}</div>
<div>Email = {{ user.email }}</div>

<p><a href="/users">Назад к списку пользователей</a></p>
7 changes: 7 additions & 0 deletions users.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[
{ "id": 1, "name": "mike" },
{ "id": 2, "name": "mishel" },
{ "id": 3, "name": "adel" },
{ "id": 4, "name": "keks" },
{ "id": 5, "name": "kamila" }
]

0 comments on commit 67ae564

Please sign in to comment.