@ArtemMik
Python

Как сделать запрос авторизации Django?

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

views.py
def Reqistration(request):
    form = SignupForm()
    if request.method == 'POST':
        if 'registration_submit' in request.POST:  # Проверяем, была ли нажата кнопка "Registration"
            form = SignupForm(request.POST)
            if form.is_valid():
                obj = User()
                obj.username = form.cleaned_data['username']
                obj.password1 = form.cleaned_data['password1']
                obj.save()
                new_profile = Employee(
                    name=obj.username,
                    password=obj.password1
                )
                new_profile.save()
                return redirect('DetailCVE')
            else:
                messages.error(request, f"Пользователь с таким именем уже существует")
        elif 'login_submit' in request.POST:  # Проверяем, была ли нажата кнопка "Enter"
            form = SignupForm(request.POST)
            if form.is_valid():
                username = form.cleaned_data['username']
                password = form.cleaned_data['password1']
                user = authenticate(request, username=username, password=password)
                if user:
                    login(request, user)
                    return redirect('DetailCVE')
                else:
                    print('fdsfds')
                    # messages.error(request, 'Invalid password or login!')

    return render(request, 'index.html', {'form': form})


forms.py

class EmployeeForm(forms.ModelForm):
    class Meta:
        model = Employee
        fields = '__all__'
        widgets = {
            'name': forms.TextInput(attrs={'id': 'username', 'placeholder': 'Username', 'type': 'text'}),
            'password': forms.PasswordInput(attrs={'id': 'password', 'placeholder': 'Password', 'type': 'password'})
        }
        exclude = ['api']


class SignupForm(UserCreationForm):
    class Meta:
        model = User
        fields = ('username', 'password1', 'first_name', 'last_name', 'email')
        widgets = {
            'username': forms.TextInput(attrs={'id': 'username', 'placeholder': 'Username', 'type': 'text'}),
            'password1': forms.PasswordInput(attrs={'id': 'password', 'placeholder': 'Password', 'type': 'password'}),
        }
        exclude = ['first_name', 'last_name', 'email']

    def __init__(self, *args, **kwargs):
        super(SignupForm, self).__init__(*args, **kwargs)
        self.fields.pop('password2')


models.py
class Employee(models.Model):
    name = models.CharField('name', max_length=100)
    password = models.CharField('password', max_length=100, default=0)
    api = models.CharField('api', max_length=100)

    class Meta:
        db_table = 'users'
        verbose_name = 'User'
        verbose_name_plural = 'Users'


def __str__(self):
    return self.name


index,html

{% block content %}
                              <form method="post">
                                  {% csrf_token %}
                                  {{ form.username}}
                                  {{ form.password1 }}
                                  {{ form.password2 }}
                                <div class="checkbox">
                                    <input id="checkbox" type="checkbox" placeholder="Remember login details">
                                    <p>Remember login details</p>
                                </div>

                                <div class="buttonsSuccess">
                                    <button  name="login_submit"type="submit"   class="enterBtn">Enter <img src="{% static 'main/img/Right 1.png' %}" alt=""></button>
                                    <button  name="registration_submit" type="submit"   class="regBtn" >Registration</button>

                                </div>
                              {% if messages %}
                                    {% for message in messages %}
                                    <p>{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</p>
                                    {% endfor %}
                            {% endif %}
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
А какая ошибка выходит?
Где у вас данные о хранении сессии?
Ну вот авторизовался пользователь, а как понять системе что он авторизован?
Прочитайте про сессии и как их хранить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы