Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.07.2021
Сообщений: 13

Регистрация и аутентификация

01.08.2021, 13:38. Показов 1655. Ответов 0

Студворк — интернет-сервис помощи студентам
Здравствуйте. Это мой первый проект с использованием rest(фронтенд на React). Мне нужно реализовать регистрацию и аутентификацию пользователей. Пользователь заполняет форму и она отправляется на обработку. В интернете было много информации, но всё-же у меня возникло несколько вопросов. Вот код views:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Login(APIView):
    permission_classes = [AllowAny]
    serializer_class = LoginSerializer
 
    def post(self, request):
        serializer = LoginSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            username = serializer.validated_data['username']
            password = serializer.validated_data['password']
            user = authenticate(username=username, password=password)
            if user:
                login(request, user)
                return HttpResponseRedirect('/')
 
 
class Registration(APIView):
    permission_classes = [AllowAny]
    serializer_class = CustomUserSerializer
 
    def post(self, request):
        serializer = CustomUserSerializer(data=request.data)
        if serializer.is_valid(raise_exception=True):
            new_user = serializer.save(commit=False)
            new_user.username = serializer.validated_data['username']
            new_user.email = serializer.validated_data['email']
            new_user.first_name = serializer.validated_data['first_name']
            new_user.last_name = serializer.validated_data['last_name']
            new_user.save()
            new_user.set_password(serializer.validated_data['password'])
            new_user.save()
            user = authenticate(username=serializer.validated_data['username'],
                                password=serializer.validated_data['password'])
            login(request, user)
            return HttpResponseRedirect('/')
Serializers:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class CustomUserSerializer(serializers.ModelSerializer):
    def validate_email(self, value):
        email = value
        if CustomUser.objects.filter(email=email).exists():
            raise serializers.ValidationError('Пользователь с этой почтой уже существует')
        return email
 
    def validate_username(self, value):
        username = value
        if CustomUser.objects.filter(username=username).exists():
            raise serializers.ValidationError('Это имя уже занято')
        return username
 
    class Meta:
        model = CustomUser
        fields = ['username', 'password', 'email', 'first_name', 'last_name']
 
 
class LoginSerializer(serializers.Serializer):
    email = serializers.EmailField(write_only=True)
    password = serializers.CharField(write_only=True)
 
    def validate(self, data):
        error = "Неверное имя пользователя или пароль"
        username = data['username']
        password = data['password']
        if not CustomUser.objects.filter(username=username).exists():
            raise forms.ValidationError(error)
        user = CustomUser.objects.filter(username=username).first()
        if user:
            if not user.check_password(password):
                raise forms.ValidationError(error)
        return data
 
    class Meta:
        model = CustomUser
        fields = ['username', 'password']
1)Можно ли использовать обычную аутентификацию джанго
Python
1
AUTH_USER_MODEL = 'Account.CustomUser'
как показано, совместно с rest, и делать простой redirect? Или я обязан возвращать что то типа:
Python
1
return Response(serialized.data, status=status.HTTP_201_CREATED)
?
2)Метод is_valid() вызовет мои методы валидации? То есть обязательно ли мне внутри условия ещё смотреть каждое поле через validated_data (
Python
1
2
 new_user.username = serializer.validated_data['username']
            new_user.email = serializer.validated_data['email']
) и т.д?
3)Что произойдёт в случае ошибок валидации? Мне нужно чтоб пользователь просто увидел ту же страницу с текстами ошибок. В интернете я видел это
Python
1
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
. Меня смущает здесь 400_BAD_REQUEST. Его вроде и метод is_valid() вернёт по умолчанию.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2021, 13:38
Ответы с готовыми решениями:

Регистрация и аутентификация на Java
Привет,что можете посоветовать для создания ,что-то типо страницы пользователя.Может туториал есть какой,как сделать сам вход ?

Регистрация и аутентификация (CreateUserWizard)
Здравствуйте. Только начал осваивать ASP.Net поэтом извиняюсь за возможно глупые вопросы. Требуется: Создать сайт с возможностью...

Web аутентификация и регистрация
Всем доброго дня и с прошедшими праздниками. У меня задача: Мне надо сделать так, чтобы пользователи сами себя могли регистрировать на...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2021, 13:38
Помогаю со студенческими работами здесь

Регистрация и аутентификация с разделением ролей пользователей
Можете поделиться свежими или просто достаточно сильными источниками, кодом для изучения, инструкциями по написанию приложения с...

SilverLight 4, Регистрация/Аутентификация, LINQ to SQL
Добрый день! Я еще совсем новичек в разработке приложений .NET и SilverLight, потому мой вопрос может показаться совсем примитивным. ...

Аутентификация
Делаю авторизацию, стакнулся с такой проблемой procedure TForm9.sBitBtn2Click(Sender: TObject); var LogPass: array of string; ...

Аутентификация
Задали задание: Создать программу аутентификации, используя в качестве па- роля количество букв имени. Я понимаю, что нужно...

Аутентификация
Здравствуйте форумчане, прошу помощи. Есть работающий проект на Laravel (Laravel 5.6 на PHP 7.2.7), размещен на IIS 7.5 на Windows 2008R2....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru