Python Django能注册用户 登录一直说用户或密码错误,有大佬可以帮忙解决一下吗

课程设计(企业仓储管理系统)

前端login_home.html

{% extends "adminuser/bg.html" %}
<html lang="en">
{% block logincontainer %}
    <meta charset="UTF-8">
<div class="login-kind admin-login-button">
    <a href="{% url "login" "Administrator" %}">仓储管理人员登录</a>
</div>
    <div class="login-kind admin-register-button">
    <a href="{% url "register" "Administrator" %}">仓储管理人员注册</a>
</div>
{% endblock %}

前端login_detail.html

{#{% extends "adminuser/bg.html" %}#}
<meta charset="UTF-8">
<html lang="en">
{% load static %}
<head>
    <link href="{% static 'css/login.css' %}" rel="stylesheet">
</head>

{% block welcome_message %}
    {% if from_url == "register" %}
        <div class="welcome-message">注册成功,你的{% if kind == "Administrator" %}编号{% else %}账号{% endif %}是 {{ uid }}</div>
    {% else %}
        <div class="welcome-message">欢迎</div>
    {% endif %}
{% endblock %}
{% block login_container %}
    {% if kind == "Administrator" %}
        <div class="login-kind-title">我是仓管</div>
    {% else %}
        <div class="login-kind-title">我是经理</div>
    {% endif %}
    <div class="login-container">
        <div class="login-title">登录</div>
        <form method="post">
            {% csrf_token %}
            {{form.as_p}}
            <div class="submit-button">
                <input type="submit" value="登录"/>
                <a href="{% url 'register' kind%}">注册</a>
            </div>
        </form>
        <div class="return-button"><a href="{% url 'login' %}">返回上一页</a></div>
    </div>

{% endblock %}

form.py

class AdminLoginForm(forms.Form):
    uid = forms.CharField(label='工号', max_length=10)
    password = forms.CharField(label='密码', max_length=30, widget=forms.PasswordInput)


class ManageLoginForm(forms.Form):
    uid = forms.CharField(label='经理编号', max_length=10)
    password = forms.CharField(label='密码', max_length=30, widget=forms.PasswordInput)


class AdminRegisterForm(forms.ModelForm):
    confirm_password = forms.CharField(widget=forms.PasswordInput, label="确认密码")

    class Meta:
        model = Administrator
        fields = (
                'admin_name',
                'admin_password',
                'confirm_password',
                'admin_gender',
                'admin_telephone',
                'admin_warehouse',
                  )

    def clean(self):
        cleaned_data = super(AdminRegisterForm, self).clean()
        password = cleaned_data.get('password')
        confirm_password = cleaned_data.get('confirm_password')
        # if confirm_password != password:
        #     self.add_error('confirm_password', 'Password does not match.')
        return cleaned_data


class AdminUpdateForm(AdminRegisterForm):
    class Meta:
        model = Administrator
        fields = ('admin_name',
                  'admin_password',
                  'confirm_password',
                  'admin_gender',
                  'admin_telephone',
                  'admin_warehouse')


class ManageRegisterForm(forms.ModelForm):
    confirm_password = forms.CharField(widget=forms.PasswordInput, label="确认密码")

    class Meta:
        model = Manager
        fields = ('manager_name',
                  'manager_password',
                  'confirm_password',
                  'manager_gender',
                  'manager_pw',
                  'manager_email',
                  'manager_telephone')

    def clean(self):
        cleaned_data = super(ManageRegisterForm, self).clean()
        password = cleaned_data.get('password')
        confirm_password = cleaned_data.get('confirm_password')
        # if confirm_password != password:
        #     self.add_error('confirm_password', 'Password does not match.')
        return cleaned_data

views.py

def login(request, *args, **kwargs):
    if not kwargs or "kind" not in kwargs or kwargs["kind"] not in ["Administrator", "Manager"]:
        return HttpResponse(INVALID_KIND)

    kind = kwargs["kind"]

    if request.method == 'POST':
        if kind == "Manager":
            form = ManageLoginForm(data=request.POST)
        else:
            form = AdminLoginForm(data=request.POST)
    #
    #     if form.is_valid():
    #         uid = form.cleaned_data["uid"]
    #         temp_res = "hello, %s" % uid
    #         return HttpResponse(temp_res)
    # else:
    #     context = {'kind': kind}
    #     if kind == "Manager":
    #         form = ManageLoginForm()
    #     else:
    #         form = AdminLoginForm()
    #
    #     context['form'] = form
        if form.is_valid():
            uid = form.cleaned_data["uid"]
            if len(uid) != 10:
                form.add_error("uid", "账号长度必须为10")
            else:
                if kind == "Manager":
                    manager_id = uid[:4]
                    object_set = Manager.objects.filter(manager_id=manager_id)
                else:
                    admin_id = uid[3:]
                    admin_warehouse = uid[:3]
                    object_set = Administrator.objects.filter(admin_warehouse=admin_warehouse, admin_id=admin_id)
                if object_set.count() == 0:
                    form.add_error("uid", "该账号不存在.")
                else:
                    user = object_set[0]
                    if form.cleaned_data["password"] != user.password:
                        form.add_error("password", "密码不正确.")
                    else:
                        request.session['kind'] = kind
                        request.session['user'] = uid
                        request.session['id'] = user.id
                        # successful login
                        to_url = reverse("course", kwargs={'kind': kind})
                        return redirect(to_url)

            return render(request, 'adminuser/login_detail.html', {'form': form, 'kind': kind})
    else:
        context = {'kind': kind}
        if request.GET.get('uid'):
            uid = request.GET.get('uid')
            context['uid'] = uid
            if kind == "Manager":
                form = ManageLoginForm({"uid": uid, 'password': '12345678'})
            else:
                form = AdminLoginForm({"uid": uid, 'password': '12345678'})
        else:
            if kind == "Manager":
                form = ManageLoginForm()
            else:
                form = AdminLoginForm()
        context['form'] = form
        if request.GET.get('from_url'):
            context['from_url'] = request.GET.get('from_url')

        return render(request, 'adminuser/login_detail.html', context)


def logout(request):
    if request.session.get("kind", ""):
        del request.session["kind"]
    if request.session.get("user", ""):
        del request.session["user"]
    if request.session.get("id", ""):
        del request.session["id"]
    return redirect(reverse("login"))
#
#

文件结构

 

结果

但登录显示账号不存在 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值