Я хочу сделать так, чтобы, если пользователь вводит то же имя пользователя, что и другой пользователь, кроме показа ошибки, такой же, как электронная почта и функция входа в систему, как добавить аутентификацию по электронной почте ... не имя пользователя и, пожалуйста, проверьте мою функцию выхода, это правильно или неправильно. Спасибо
Элемент списка
Я хочу проверить, что имя пользователя уже существует, чем показать ошибку, такую же, как и по электронной почте, и, пожалуйста, проверьте, мой логин Я хочу ввести адрес электронной почты, а не имя пользователя, что я могу сделать. моя функция выхода, правильная это или неправильная, скажите мне.
Элемент списка
views.py
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import messages
from django.contrib import auth
from .models import *
def appofimage(request):
cats = category.objects.all()
images = post.objects.all()
data = {'images': images, 'cats': cats}
return render(request, 'home.html', data)
def signup(request):
if request.method == 'POST':
username1 = request.POST['username']
firstname1 = request.POST['firstname']
lastname1 = request.POST['lastname']
email1 = request.POST['email']
password = request.POST['password']
password1 = request.POST['password1']
# check for error messages
# username should be under 15 characters
if len(username1) > 15:
messages.error(request, "Username must be under 15 characters")
return redirect('appofimage')
# password should match
if password != password1:
messages.error(request, 'Password do not match')
return redirect('appofimage')
# username should be alphanumeric mens does not contain any &*()%$ etc..
if not username1.isalnum():
messages.error(request, 'Username Should Only Contain Letters And Numbers')
return redirect('appofimage')
myuser = User.objects.create_user(username=username1, email=email1, password=password)
myuser.first_name = firstname1
myuser.last_name = lastname1
myuser.save()
messages.success(request, 'user has been created')
return redirect('appofimage')
else:
return render(request, 'signup.html')
def login(request):
if request.method == 'POST':
username1 = request.POST['username']
password1 = request.POST['password']
user = auth.authenticate(username=username1, password=password1)
if user is not None:
auth.login(request, user)
messages.success(request, f"welcome {username1}")
return redirect('appofimage')
else:
messages.error(request, "not valid")
return redirect('appofimage')
return render(request, 'login.html')
def logout(request):
if request.method == 'POST':
messages.error(request, "Try again")
return redirect('appofimage')
else:
auth.logout(request)
messages.success(request, "logout successful")
return redirect('appofimage')
регистрация. html
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<title>SignUp</title>
</head>
<body>
<div class="container-md">
<form action="" method="post">
{% csrf_token %}
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" name="username" id="username">
</div>
<div class="form-group">
<label for="firstname">First Name</label>
<input type="text" class="form-control" name="firstname" id="firstname">
</div>
<div class="form-group">
<label for="lastname">Last Name</label>
<input type="text" class="form-control" name="lastname" id="lastname">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" id="password">
</div>
<div class="form-group">
<label for="password1">Confirm Password</label>
<input type="password" class="form-control" name="password1" id="password1">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</body>
</html>
логин. html
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<title>Login</title>
</head>
<body>
<div class="container-md">
<form action="" method="post">
{% csrf_token %}
<div class="form-group">
<label>Username</label>
<input type="text" class="form-control" name="username">
</div>
<div class="form-group">
<label>Password</label>
<input type="password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</body>
</html>