-
Notifications
You must be signed in to change notification settings - Fork 0
/
django_pr.py
102 lines (89 loc) · 5.21 KB
/
django_pr.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
from django.http import HttpResponse
articles_list = [
[1, "Айви Яптанго", 2020, "Самые шикарные парочки знаменитостей 2019 года", ["красота", "гороскопы"]],
[2, "Лео Месси", 2014, "Un Abrazo a Todos", ["лайфстайл", "недвижимость"]],
[3, "Гэри Паска", 2016, "Продаётся дом в Южной Флориде за $2,695", ["недвижимость", "коучинг", "howto"]],
[4, "Роби Тобинсон", 1967, "7 лет я применял этот трюк и назад пути нет", ["лайфхак", "коучинг", "howto"]],
[5, "Металлий Вутко", 2017, "Let Me Speak From My Heart", ["футбол", "допинг"]],
[6, "Роби Тобинсон", 1977, "Беспроигрышная древнеримская техника обольщения", ["отношения", "история", "howto"]],
[7, "Роби Тобинсон", 2022, "3 способа установить девайс от храпа", ["здоровье", "коучинг", "howto"]],
[8, "Роби Тобинсон", 1975, "Интимная проблема, которой втайне озабочены все ваши друзья", ["отношения", "здоровье", "howto"]],
[9, "Elina Shake", 2008, "Представления, основанные на классах", ["python", "howto", "лайфхак"]],
[10, "Бен Франклин", 1753, "Электрические стодолларовые купюры", ["фондовая биржа", "рынки", "электричество"]],
[11, "Роби Тобинсон", 2012, "5 забавных Django Apps, о которых говорят все", ["django", "IT", "howto"]],
[12, "Металлий Вутко", 2017, "No Problems, No Criminality", ["допинг", "недвижимость"]],
[13, "Роби Тобинсон", 1987, "7 способов до смерти напугать своего босса в пятницу 13-го", ["работа", "мистика", "howto"]],
[14, "Твентин Карантино", 2007, "Четыре сервера", ["кино", "django", "мистика"]],
]
# в функции generate_html()
# оформим перечень статей в виде html-списка
def generate_html(articles):
if len(articles) == 0:
return '<h1>По вашему запросу не найдено ни одной статьи!</h1>'
else:
base_html = '<h1>Статьи по вашему запросу:</h1> <ul>'
for article in articles:
list_item = f'<li><ul>' \
f'<li><strong>{article[3]}</strong></li>' \
f'<li>автор: {article[1]}</li>' \
f'<li>год: {article[2]}</li>' \
f'<li>теги: {", ".join(article[4])}</li>' \
f'</ul></li>'
base_html += list_item
base_html += '</ul>'
return base_html
# на случай, если в адресе не указан год - установим значение year=-1
def dashboard(request, year=-1):
found_articles = []
if year == -1:
# если в адресе не указан год,
# записываем в found_articles все статьи нашего блога
found_articles = articles_list
else:
for article in articles_list:
if year == article[2]:
found_articles.append(article)
beautiful_html = generate_html(found_articles)
return HttpResponse(beautiful_html)
def article_by_id(request, id):
found_articles = []
for article in articles_list:
if id == article[0]:
found_articles.append(article)
beautiful_html = generate_html(found_articles)
return HttpResponse(beautiful_html)
def articles_by_tag(request, tag):
found_articles = []
for article in articles_list:
if tag in article[4]:
found_articles.append(article)
beautiful_html = generate_html(found_articles)
return HttpResponse(beautiful_html)
html_template = '''<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>My Praktikum Blog</title>
</head>
<body>
<form action="{where}" method="post">
Введите ID статьи и имя нового тега<br><br>
ID статьи: <input type="text" name="id"><br><br>
Новый тег: <input type="text" name="new_tag"><br><br>
<input type="submit" value="Добавить тег">
</form>
</body>
</html>'''
def add_tag(request):
if request.method == 'GET':
html = html_template.format(where = request.path)
resp = HttpResponse(html)
return resp
elif request.method == 'POST':
article_id = int(request.POST['id']) # получите ID статьи из запроса
new_tag = request.POST['new_tag'] # получите новый тег из запроса
# допишите код здесь:
for article in articles_list:
if article_id == article[0]:
article[4].append(new_tag)
return article_by_id(request, article_id)