БФИ2203 Мячина ввит6
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
(МТУСИ)
Лабораторная работа №6
«Создание формы для регистрации и авторизации»
Выполнила:
студентка группы БФИ2203
Мячина Лада Андреевна
Проверил:
Фурлетов Юрий Михайлович
Москва 2023
Цель работы: создать дополнительную страницу для регистрации и авторизации.
Задание:
Создайте шаблон и настройте адрес для отображения формы регистрации;
Создайте представление, которое будет обрабатывать поступающие запросы и регистрировать новых пользователей. Не забудьте сделать проверку на то, что отправленные поля не являются пустыми, а введенное имя пользователя уникально;
Создайте стили, подключив CSS-файл к шаблону;
Добавьте в шапку страницы всех записей и страницы для определенных статей, ссылку на регистрацию в верхнем правом углу (стиль ссылки сделать такой же, как у ссылки “Все статьи” на собственных страницах постов в предыдущих работах).
Создайте шаблон и настройте адрес для отображения формы авторизации;
Создайте представление, которое будет обрабатывать поступающие запросы и авторизовывать зарегистрированных пользователей. Не забудьте сделать проверку на то, что отправленные поля не являются пустыми, а введенные имя пользователя и пароль соответствуют одному из зарегистрированных аккаунтов;
Создайте стили, подключив CSS-файл к шаблону;
Загрузите ваш проект на любой гит-репозиторий (GitHub, GitLab, Google Code, Bitbucket и т.п.).
Ход работы:
Создание страницы регистрации. Добавление обработки на не заполненные поля и уникальность имени пользователя. В шапку помещены ссылки на авторизацию и архив статей.
Листинг
def registration(request): if request.method == "POST": form = { 'username': request.POST["username"], 'mail': request.POST["mail"], 'password': request.POST["password"] } art = None try: art = User.objects.get(username=form["username"]) art = User.objects.get(email=form["mail"]) # если юзер существует, то ошибки не произойдет и программа удачно доберется до следующей строчки print (u"Такой пользователь уже есть") except User.DoesNotExist: print (u"Такого пользователя еще нет") if form["username"] and form["mail"] and form["password"] and art is None: art = User.objects.registration(username=form["username"], email=form["mail"], password=form["password"]) return redirect(archive) else: if art is not None: form['errors'] = u"Логин или почта уже заняты" else: form['errors'] = u"Не все поля заполнены" return render(request, 'registration.html', {'form': form}) else: return render(request, 'registration.html', {})
Html код:
<!DOCTYPE html>
<html>
<head>
{% load static %}
<link rel="stylesheet" href="{{ STATIC_URL }}/static/articles.css">
<title>Регистрация</title>
</head>
<body>
<h1>Регистрация</h1>
<a href="{% url 'user_login' %}">Авторизация</a> |
<a href="{% url 'archive' %}">Список всех статей</a>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Отправить</button>
</form>
{% if form.errors %}
<p>{{ form.errors }}</p>
{% endif %}
<br>
</body>
</html>
Создание страницы авторизации.
Листинг
def user_login(request): if request.method == "POST": form = { 'username': request.POST.get("username", ""), 'password': request.POST.get("password", "") } if form["username"] and form["password"]: user = authenticate(request, username=form["username"], password=form["password"]) if user is not None: login(request, user) return redirect('archive') else: form['errors'] = u"Такой пользователь не зарегистрирован!" else: form['errors'] = u"Не все поля заполнены" return render(request, 'user_login.html', {'form': form}) else: return render(request, 'user_login.html', {})
Html код:
<!DOCTYPE html>
<html>
<head>
{% load static %}
<link rel="stylesheet" href="{{ STATIC_URL }}/static/articles.css">
<title>Вход в систему</title>
</head>
<body>
<h1>Авторизация</h1>
<a href="{% url 'registration' %}">Регистрация</a> |
<a href="{% url 'archive' %}">Список всех статей</a>
{% if error %}
<p style="color: red">{{ error }}</p>
{% endif %}
<form method="post">
<label for="username">Имя пользователя:</label><br>
<input type="text" id="username" name="username"><br><br>
<label for="password">Пароль:</label><br>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="Войти">
</form>
</body>
</html>
Новые зарегистрированные пользователи:
На странице архива статей добавление ссылок на регистрацию, авторизацию и создание статей.
Ссылка на GitHub: https://github.com/LadaMyachina/labVvIT6
