views.py 2.5 KB

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