12311k

Untitled

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