【django+xadmin实战】0131笔记——用户模块(1)

一、
1.index界面的配置,
    在url文件下面配置:from django.views.generic import TemplateViewurl('^$', TemplateView.as_view(template_name='index.html'), name="index"),
    settings文件下配置:STATICFILES_DIRS = [(os.path.join(BASE_DIR, 'statics'))]
2.html的替换路径:href="/statics/css/reset.css"
3.登录界面的跳转配置:url('^login/$', TemplateView.as_view(template_name='login.html'), name="login"),

二、用户登陆实现
1.配置view
    def user_login(request):
        if request.method == "POST":
            user_name = request.POST.get("username", "")
            user_password = request.POST.get("password", "")
            user = authenticate(username=user_name, password=user_password)
            if user is not None:
                login(request, user)
                return render(request, "index.html")
            else:
                return render(request, "login.html", {})
        elif request.method == "GET":
            return render(request, "login.html", {})
            
2.配置index登陆
    {% if request.user.is_authenticated %}
    {% else %}
    {% endif %}
3.login界面配置:<form action="/login/" method="post" autocomplete="off">
4.url界面配置:url('^login/$', user_login, name="login")

5.自定义auth方法,进行逻辑判断:
    1AUTHENTICATION_BACKENDS = ['users.views.CustomBackend',]
    2class CustomBackend(ModelBackend):
        def authenticate(self, username=None, password=None, **kwargs):
            try:
                user = UserProfile.objects.get(username = username)
                if user.check_password(password):
                    return user
            except Exception as e:
                return None

三、重写用户登陆方法(继承类的方法来实现)
1.from django.views.generic.base import View
2.
    class LoginView(View):
        def get(self, request):
            return render(request, "login.html", {})

        def post(self, request):
            user_name = request.POST.get("username", "")
            user_password = request.POST.get("password", "")
            user = authenticate(username=user_name, password=user_password)
            if user is not None:
                login(request, user)
                return render(request, "index.html")
            else:
                return render(request, "login.html", {"msg": "用户名或密码错误"})
3.修改url文件:url('^login/$', LoginView.as_view(), name="login")


四、form的用途
1.定义forms类:
    class LoginForm(forms.Form):
        username = forms.CharField(required=True)
        password = forms.CharField(required=True)
2.重写方法
    def post(self, request):
        login_form = LoginForm(request.POST)
        if login_form.is_valid():
            user_name = request.POST.get("username", "")
            user_password = request.POST.get("password", "")
            user = authenticate(username=user_name, password=user_password)
            if user is not None:
                login(request, user)
                return render(request, "index.html")
            else:
                return render(request, "login.html", {"msg": "用户名或密码错误"})
        else:
            return render(request, "login.html", {"login_form": login_form})
3.前端处理
    (1)错误信息返回:{% if login_form.errors.username %} errorput {% endif %}
    2)报错打印:{% for key,error in login_form.errors.items %}{{ error }} {% endfor %}{{ msg }}




























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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值