sttpforever

Untitled

May 12th, 2021
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. from django.core.paginator import Paginator
  2. from django.shortcuts import render, get_object_or_404, redirect
  3. from django.contrib.auth.decorators import login_required
  4. from django.contrib.auth import get_user_model
  5. from .models import Post, Group
  6. from .forms import PostForm
  7.  
  8. User = get_user_model()
  9.  
  10.  
  11. def index(request):
  12. post_list = Post.objects.all().order_by('-id')
  13. paginator = Paginator(post_list, 10)
  14. # Из URL извлекаем номер запрошенной страницы - это значение параметра page
  15. page_number = request.GET.get('page')
  16. # Получаем набор записей для страницы с запрошенным номером
  17. page = paginator.get_page(page_number)
  18. return render(request, 'index.html', {'page': page, })
  19.  
  20.  
  21. def group_posts(request, slug):
  22. group = get_object_or_404(Group, slug=slug)
  23. posts = group.posts.all()
  24. # Показывать по 10 записей на странице.
  25. paginator = Paginator(posts, 10)
  26. # Из URL извлекаем номер запрошенной страницы - это значение параметра page
  27. page_number = request.GET.get('page')
  28. # Получаем набор записей для страницы с запрошенным номером
  29. page = paginator.get_page(page_number)
  30. return render(request, "group.html", {"group": group, "page": page})
  31.  
  32.  
  33. @login_required
  34. def new_post(request):
  35. form = PostForm(request.POST or None)
  36. if not form.is_valid():
  37. return render(request,
  38. 'new.html', {'form': form,
  39. 'but': 'Добавить', })
  40. else:
  41. post = form.save(commit=False)
  42. post.author = request.user
  43. post.save()
  44. return redirect('index')
  45. return render(request,
  46. 'new.html', {'form': form,
  47. 'but': 'Добавить', })
  48.  
  49.  
  50. def profile(request, username):
  51. user_prof = get_object_or_404(User, username=username)
  52. post_list = user_prof.posts.all()
  53. paginator = Paginator(post_list, 10)
  54. page_number = request.GET.get('page')
  55. page = paginator.get_page(page_number)
  56. return render(request, 'profile.html', {'author': user_prof,
  57. 'page': page, })
  58.  
  59.  
  60. def post_view(request, username, post_id):
  61. post = get_object_or_404(Post, author__username=username, pk=post_id)
  62. return render(request, 'post.html',
  63. {'author': post.author,
  64. 'post': post})
  65.  
  66.  
  67. @login_required
  68. def post_edit(request, username, post_id):
  69. text_post = get_object_or_404(Post, pk=post_id, author__username=username)
  70. if text_post.author != request.user:
  71. return redirect('post', username=username,
  72. post_id=post_id)
  73. form = PostForm(request.POST or None, files=request.FILES or None,
  74. instance=text_post)
  75. if not form.is_valid():
  76. return render(request,
  77. 'new.html', {'form': form,
  78. 'but': 'Редактировать', })
  79. post = form.save(commit=False)
  80. post.save()
  81. return redirect('post', username=username,
  82. post_id=post.id)
  83. return render(request,
  84. 'new.html', {'form': form,
  85. 'but': 'Редактировать',
  86. 'lab': 'Редактировать запись', })
  87.  
  88.  
  89. def page_not_found(request, exception):
  90. return render(
  91. request,
  92. "misc/404.html",
  93. {"path": request.path},
  94. status=404
  95. )
  96.  
  97.  
  98. def server_error(request):
  99. return render(request, "misc/500.html", status=500)
Advertisement
Add Comment
Please, Sign In to add comment