from .models import Article from django.shortcuts import render from django.http import Http404, HttpResponse from django.shortcuts import redirect from django.contrib.auth.models import User from django.contrib.auth import authenticate, login, logout def archive(request): return render(request, 'archive.html', {"posts": Article.objects.all()}) def get_article(request, article_id): try: post = Article.objects.get(id=article_id) return render(request, 'article.html', {"post": post, "user": request.user}) except Article.DoesNotExist: raise Http404 def create_post(request): if request.method == "POST": form = { 'text': request.POST["text"], 'title': request.POST["title"] } if form["text"] and form["title"]: print('try') try: article = Article.objects.create(text=form["text"], title=form["title"], author=request.user) return redirect('get_article', article_id=article.id) except: return render(request, 'article_invalid_name.html') else: return render(request, 'new_article.html', {'form': form, 'error': 'Введите название и текст статьи!'}) if not request.user.is_anonymous: return render(request, 'new_article.html') else: return HttpResponse('Unauthorized', status=401) def registration(request): if request.method == "POST": form = { 'username': request.POST["username"], 'email': request.POST["email"], 'password': request.POST["password"] } username = request.POST.get("username", "").strip() email = request.POST.get("email", "").strip() password = request.POST.get("password", "").strip() if not username or not email or not password: return render(request, 'registration.html', {'error': 'Все поля обязательны для заполнения.', 'form': form}) if len(password) < 6: return render(request, 'registration.html', {'error': 'Пароль должен содержать не менее 6 символов.', 'form': form}) if User.objects.filter(username=username).exists(): return render(request, 'registration.html', {'error': 'Пользователь с таким именем уже существует.', 'form': form}) if User.objects.filter(email=email).exists(): return render(request, 'registration.html', {'error': 'Этот email уже используется.', 'form': form}) if "@" not in email or "." not in email: return render(request, 'registration.html', {'error': 'Некорректный формат email.', 'form': form}) user = User.objects.create_user(username=username, email=email, password=password) user.save() return redirect('/login') return render(request, 'registration.html') def login_page(request): if request.method == "POST": form = {'username': request.POST.get("username"), 'password': request.POST.get("password")} username = request.POST.get("username", "").strip() password = request.POST.get("password", "").strip() if not username or not password: return render(request, 'login.html', {'error': 'Введите имя пользователя и пароль.', 'form': form}) user = authenticate(request, username=username, password=password) if user is None: return render(request, 'login.html', {'error': 'Неверное имя пользователя или пароль.', 'form': form}) login(request, user) return redirect('/') return render(request, 'login.html') def user_logout(request): logout(request) return redirect('/')