views.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from django.shortcuts import render, redirect
  2. from django.http import HttpResponse, HttpResponseNotFound, Http404, HttpResponseRedirect
  3. from django.urls import reverse
  4. from django.template.loader import render_to_string
  5. from django.template.defaultfilters import slugify
  6. # Create your views here.
  7. menu = ["О сайте", "Добавить сатью", "Обратная связь", "Войти"]
  8. data_db = [
  9. {'id': 1, 'title': 'Анджелина Джоли', 'content': 'Биография Анджелины Джоли', 'is_published': True },
  10. {'id': 2, 'title': 'Марго Робби', 'content': 'Биография Марго Робби', 'is_published': False },
  11. {'id': 3, 'title': 'Джулия Робертс', 'content': 'Биография Джулия Робертс', 'is_published': True },
  12. ]
  13. def index(request): # HttRequest
  14. # t = render_to_string('women/index.html')
  15. # return HttpResponse(t)
  16. # data = {'title': 'главная страница?',
  17. # 'menu': menu,
  18. # 'float': 234.465,
  19. # 'lst': [1, 2, 'abc', True],
  20. # 'set': {1, 2, 3, 4, 5},
  21. # 'dict': {'key_1': 'value_1', 'key_2': 'value_2'},
  22. # 'obj': MyClass(10, 20),
  23. # 'url': slugify("The main page"),
  24. # }
  25. data = {'title': 'Главная страница',
  26. 'menu': menu,
  27. 'posts': data_db,
  28. }
  29. return render(request, 'women/index.html', context=data)
  30. def about(request):
  31. return render(request, 'women/about.html', {'title': 'О сайте'})
  32. def categories(request, cat_id):
  33. return HttpResponse(f"<h1>Статьи по категориям</h1><p>id: {cat_id}</p>")
  34. def categories_by_slug(request, cat_slug):
  35. if request.GET:
  36. print(request.GET)
  37. return HttpResponse(f"<h1>Статьи по категориям</h1><p>slug: {cat_slug}</p>")
  38. def archive(request, year):
  39. if year > 2023:
  40. # return redirect('/') # код 302
  41. # return redirect(index) # код 302 Можно указать функцию-представление
  42. # return redirect(index) # код 302 Можно указать функцию-представление
  43. # return redirect('home') # указываем имя маршрута
  44. # return redirect('/', permanent=True) # код 301
  45. uri = reverse('cats', args=('sport', ))
  46. print(uri)
  47. # return redirect(uri)
  48. return HttpResponseRedirect('/')
  49. return HttpResponse(f"<h1>Архив по годам</h1><p>{year}</p>")
  50. def post_detail(request):
  51. if request.GET:
  52. ans = ""
  53. for key, value in request.GET.items():
  54. ans += f'{key}={value}|'
  55. return HttpResponse(ans[:-1])
  56. else:
  57. return HttpResponse("GET is empty")
  58. def posts_list(request, year):
  59. if 1990 <= year <= 2023:
  60. return HttpResponse(f'posts: {year}')
  61. else:
  62. raise Http404()
  63. def page_not_found(request, exception):
  64. return HttpResponseNotFound("<h1>Страница не найдена</h1>")