Django
  • Введение
  • Установка
  • Создание проекта
  • Создание приложения
  • Администрирование
  • Создание страниц
  • Динамические страницы
  • Добавление стилей
  • Шаблоны
  • Вывод одной записи
  • AJAX
  • Взаимодействие с БД
  • Сборка на Python3
  • Формы POST запрос
  • Cookie файлы
  • Работа с пользователями
  • Связь в моделях
  • PostgreSQL + JSON
  • Отключение csrf
Powered by GitBook
On this page
  • Регистрация пользователя
  • Авторизация пользователя
  • Проверка на авторизованность
  • Выход из профиля
  • Репозиторий

Was this helpful?

Работа с пользователями

Для работы с пользователями необходимо подключить модель и библиотеки

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("Вы вышли")

Репозиторий

Ссылка на репозиторий с проектом

https://github.com/maxim218/TEST_DJANGO_REG_AUTH_COOKIE
PreviousCookie файлыNextСвязь в моделях

Last updated 5 years ago

Was this helpful?