Для работы с пользователями необходимо подключить модель и библиотеки
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login
from django.contrib.auth import logout
Регистрация пользователя
HTML форма для отправки запроса на регистрацию пользователя
<h2>Регистрация пользователя</h2>
<form method = "POST" action = "/reg_my_user/">
{% csrf_token %}
<p>Логин</p>
<input type = "text" name = "userLogin">
<p>Пароль</p>
<input type = "password" name = "userPassword">
<br>
<br>
<input type = "submit" value = "Зарегистрироваться">
</form>
Код для обработки запроса на регистрацию пользователя
def reg_my_user(request):
# get params from post query
user_login = str( request.POST['userLogin'] )
user_password = str( request.POST['userPassword'] )
# try to find user in db
users = User.objects.filter(username=user_login)
if len(users) > 0:
# user is already exists in DB
return HttpResponseRedirect("/my_page_with_form/" + "user_is_already_exists_in_db")
else:
# registrate new user
user = User.objects.create_user(user_login, user_login + "@abc.ru", user_password)
user.save()
return HttpResponseRedirect("/my_page_with_form/" + "create_user_ok")
Авторизация пользователя
HTML форма для отправки запросов на авторизацию пользователя в системе
<h2>Вход в аккаунт</h2>
<form method = "POST" action = "/go_to_account/">
{% csrf_token %}
<p>Логин</p>
<input type = "text" name = "loginOfUser">
<p>Пароль</p>
<input type = "password" name = "passwordOfUser">
<br>
<br>
<input type = "submit" value = "Войти в аккаунт">
</form>
Код для обработки запроса на авторизацию пользователя
def go_to_account(request):
# get params from post query
user_login = str( request.POST['loginOfUser'] )
user_password = str( request.POST['passwordOfUser'] )
# try to get user in Db
user = authenticate(username=user_login, password=user_password)
# if user exists
if user is not None:
# authorize user
login(request, user)
return HttpResponseRedirect("/my_page_with_form/" + "authorize_ok")
else:
# not correct login or password
return HttpResponseRedirect("/my_page_with_form/" + "not_correct_login_or_password")
Проверка на авторизованность
Код на HTML странице для отправки запроса на проверку авторизованности
<button onclick="isAuthorized()">Авторизован ли я</button>
<script>
function isAuthorized() {
const url = "/is_i_am_authorized";
let r = new XMLHttpRequest();
r.open("GET",url, true);
r.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
r.send(null);
r.onreadystatechange = function() {
if(r.readyState === 4 && r.status === 200) {
const answer = r.responseText;
r = null;
alert(answer);
}
}
}
</script>
Код для обработки запроса на проверку авторизованности
def is_i_am_authorized(request):
if request.user.is_authenticated():
user_login = str(request.user.username)
return HttpResponse("Вы авторизованы как " + user_login)
else:
return HttpResponse("Вы НЕ авторизованы")
Выход из профиля
Код на HTML странице для отправки запроса на выход из профиля
<button onclick="exitFromAccount()">Выйти из аккаунта</button>
<script>
function exitFromAccount() {
const url = "/exit_from_my_account";
let r = new XMLHttpRequest();
r.open("GET",url, true);
r.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
r.send(null);
r.onreadystatechange = function() {
if(r.readyState === 4 && r.status === 200) {
const answer = r.responseText;
r = null;
alert(answer);
}
}
}
</script>
Код для обработки запроса на выход из профиля
def exit_from_my_account(request):
if request.user.is_authenticated():
logout(request)
return HttpResponse("Вы вышли")