12311k

Untitled

Jan 18th, 2020
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. from django.http import HttpResponse
  2. from django.shortcuts import render
  3.  
  4. articles_list = [
  5. [1, "Айви Яптанго", 2020, "Самые шикарные парочки знаменитостей 2019 года", ["красота", "гороскопы"]],
  6. [2, "Лео Месси", 2014, "Un Abrazo a Todos", ["лайфстайл", "недвижимость"]],
  7. [3, "Гэри Паска", 2016, "Продаётся дом в Южной Флориде за $2,695", ["недвижимость", "коучинг", "howto"]],
  8. [4, "Роби Тобинсон", 1967, "7 лет я применял этот трюк и назад пути нет", ["лайфхак", "коучинг", "howto"]],
  9. [5, "Металлий Вутко", 2017, "Let Me Speak From My Heart", ["футбол", "допинг"]],
  10. [6, "Роби Тобинсон", 1977, "Беспроигрышная древнеримская техника обольщения", ["отношения", "история", "howto"]],
  11. [7, "Роби Тобинсон", 2022, "3 способа установить девайс от храпа", ["здоровье", "коучинг", "howto"]],
  12. [8, "Роби Тобинсон", 1975, "Интимная проблема, которой втайне озабочены все ваши друзья", ["отношения", "здоровье", "howto"]],
  13. [9, "Elina Shake", 2008, "Представления, основанные на классах", ["python", "howto", "лайфхак"]],
  14. [10, "Бен Франклин", 1753, "Электрические стодолларовые купюры", ["фондовая биржа", "рынки", "электричество"]],
  15. [11, "Роби Тобинсон", 2012, "5 забавных Django Apps, о которых говорят все", ["django", "IT", "howto"]],
  16. [12, "Металлий Вутко", 2017, "No Problems, No Criminality", ["допинг", "недвижимость"]],
  17. [13, "Роби Тобинсон", 1987, "7 способов до смерти напугать своего босса в пятницу 13-го", ["работа", "мистика", "howto"]],
  18. [14, "Твентин Карантино", 2007, "Четыре сервера", ["кино", "django", "мистика"]],
  19. ]
  20.  
  21.  
  22. # в функции generate_html()
  23. # оформим перечень статей в виде html-списка
  24. def generate_html(articles):
  25. if len(articles) == 0:
  26. return '<h1>По вашему запросу не найдено ни одной статьи!</h1>'
  27. else:
  28. base_html = '<h1>Статьи по вашему запросу:</h1> <ul>'
  29. for article in articles:
  30. list_item = f'<li><ul>' \
  31. f'<li><strong>{article[3]}</strong></li>' \
  32. f'<li>автор: {article[1]}</li>' \
  33. f'<li>год: {article[2]}</li>' \
  34. f'<li>теги: {", ".join(article[4])}</li>' \
  35. f'</ul></li>'
  36. base_html += list_item
  37. base_html += '</ul>'
  38. return base_html
  39.  
  40.  
  41. # на случай, если в адресе не указан год - установим значение year=-1
  42. def dashboard(request, year=-1):
  43. found_articles = []
  44. if year == -1:
  45. # если в адресе не указан год,
  46. # записываем в found_articles все статьи нашего блога
  47. found_articles = articles_list
  48. else:
  49. for article in articles_list:
  50. if year == article[2]:
  51. found_articles.append(article)
  52. beautiful_html = generate_html(found_articles)
  53. return HttpResponse(beautiful_html)
  54.  
  55.  
  56. def article_by_id(request, id):
  57. found_articles = []
  58. for article in articles_list:
  59. if id == article[0]:
  60. found_articles.append(article)
  61. beautiful_html = generate_html(found_articles)
  62. return HttpResponse(beautiful_html)
  63.  
  64.  
  65. def get_articles_by_tag(tag):
  66. found_articles = []
  67. for article in articles_list:
  68. if tag in article[4]:
  69. found_articles.append(article)
  70. return found_articles
  71.  
  72.  
  73. def articles_by_tag(request, tag):
  74. beautiful_html = generate_html(get_articles_by_tag(tag))
  75. return HttpResponse(beautiful_html)
  76.  
  77.  
  78. def check_age(request):
  79. if request.method == 'GET':
  80. user_age = int(request.GET['age'])
  81. if user_age < 18:
  82. return render(request, 'templates/articles/access_denied.html')
  83. else:
  84. login = request.GET['login']
  85. tag = request.GET['tag']
  86. articles = get_articles_by_tag(tag)
  87. context = {
  88. 'username': login,
  89. 'age': user_age,
  90. 'articles': articles
  91. }
  92. return render(request, 'templates/articles/access_granted.html', context)
Add Comment
Please, Sign In to add comment