84 lines
3.8 KiB
Python
84 lines
3.8 KiB
Python
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('/') |