12311k

Untitled

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