首页 > 解决方案 > Django用户无法登录

问题描述

我制作了一个自定义的 UserCreationForm。我可以注册,但之后我无法登录我的网络应用程序。我只能以超级用户身份登录。我导入了 LoginView() 但是当我尝试登录时它告诉我“请输入正确的用户名和密码。请注意,这两个字段可能区分大小写。”。

[视图.py]

@csrf_exempt
def signup(request):
if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileInfoForm(data=request.POST)
        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()
            profile = profile_form.save(commit=False)
            profile.user = user
            if 'profile_pic' in request.FILES:
                print('found it')
                profile.profile_pic = request.FILES['profile_pic']
            profile.save()
            # registered = True
            login(request, user, backend='django.contrib.auth.backends.ModelBackend')
            return redirect('../')
        else:
            print(user_form.errors,profile_form.errors)
    else:
        user_form = UserForm()
        profile_form = UserProfileInfoForm()
    return render(request,'users/signup.html',
                          {'user_form':user_form,
                           'profile_form':profile_form,'registered':registered})

表格.py

class UserForm(UserCreationForm):
    class Meta():
        model = User
        fields = ('username','email')

    def __init__(self, *args, **kwargs):
        super(UserCreationForm, self).__init__(*args, **kwargs)
        for fieldname in ['username', 'password1', 'password2']:
            self.fields[fieldname].help_text = None


class UserProfileInfoForm(forms.ModelForm):

    class Meta():
        is_photographer = forms.BooleanField()
        model = UserProfileInfo
        fields = ('portfolio_site','profile_pic', 'type_of_photography', 'is_photographer',)```

模型.py

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    portfolio_site = models.URLField(blank=True)
    profile_pic = models.ImageField(upload_to='profile_pics',blank=True)
    is_photographer = models.BooleanField(default=False)
    type_of_photography = models.CharField(max_length=120, blank=True)

    def __str__(self):
        return self.user.username


登录.html

{% load staticfiles %}
{% block title %}
<title>Login</title>
<link rel="stylesheet" href="{% static 'css/login.css' %}"/>
{% endblock %}
{% block main %}

<div class="col-md-11 container login">
    <div class="row">

        <div class="col-md-7 left">
            <div class="group">
                <h1>Login</h1>
                <h4>Welcome Back. Please login to your account.</h4>
                <form enctype="multipart/form-data" method="POST">

                    {% csrf_token %}
                    {{ form.as_p }}
                    <button type="submit" value = "login">Login</button>
                </form>
            </div>
        </div>


        <div class="col-md-5 right">
            <div class="group">
                <h1>Don't have an account?</h1>
                <h4>Create one now!</h4>
                <a href="{% url 'signup' %}"><button>Sign up</button></a>
            </div>
        </div>

    </div>
</div>
{% endblock %}

标签: pythondjango

解决方案


推荐阅读