Django2.2 学习笔记 (11)_登录_账号+密码+动态图形验证码+登出

这篇博客详细介绍了如何在Django2.2中实现登录功能,包括配置urls.py、编写views.py、创建forms.py以及前端login.html的注意事项。同时,讲解了图形验证码(captcha)的安装步骤,HTTP重定向技术,以及HTML属性中的class、id、form、input和script等关键属性。
摘要由CSDN通过智能技术生成

目录

1 代码编写顺序

2 urls.py文件

3 views.py文件

4  在用户目录下新建forms.py

5 前端login.html注意事项

refer1: URL构成简析

refer2: 图形验证码(captcha)的安装

refer3: HTTP重定向(Redirect)技术

refer4: HTML 属性


 

1 代码编写顺序

针对每一个功能写代码的循环顺序:配置url(urls.py)→ 编写apps/user中的view类(apps/user/views.py)→(如果需要)编写新建的py文件 → 修改前端页面

2 urls.py文件

# urls.py
from django.urls import path, re_path, include
from django.views.generic import TemplateView

from apps.users.views import LoginView,LoginoutView  # 自己创建的类

# TemplateView 可以省略view层,直接在url层返回页面
# 官方文档:https://docs.djangoproject.com/zh-hans/2.2/ref/class-based-views/base/#django.views.generic.base.TemplateView
# TemplateView.as_view(template_name="要渲染的模板文件"
# 可以使用get_context_data() 函数传一些额外内容到模板
# 参考文档:https://blog.csdn.net/mikezhou002/article/details/81293293

# context
# 可以利用context传递数据给Template对象。一个context是一系列变量和它们值的集合
# 参考文档:https://www.cnblogs.com/haiyan123/p/9771628.html

# https://docs.djangoproject.com/en/2.2/ref/urls/
urlpatterns = [
    # path路径为空代表访问域名(http://127.0.0.1:8000)时展示的页面
    # path('login/',TemplateView.as_view(template_name="login.html"),name="login"),
    path('',LoginView.as_view(),name="login"),

    # index.html 是登录之后跳转的页面
    # 结尾一定要加/,这样既可以匹配index/,也可以匹配index。如果不加,则只能匹配index
    path('index/',TemplateView.as_view(template_name="index.html"),name="index"),
    
    # 登出url
    path('logout/',LoginoutView.as_view(),name="logout"),

    # 验证码相关
    re_path('^captcha/', include('captcha.urls')),
    # 验证码官方文档:https://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation
]

3 views.py文件

# apps/user/views.py
from django.shortcuts import render
from django.views.generic.base import View
from django.contrib.auth import authenticate,login,logout
from django.http import HttpResponseRedirect
from django.urls import reverse

from apps.users.forms import LoginForm, DynamicLoginForm # 自己创建的类

# Django提供的Form表单可以自动判断各种逻辑,例如:是否为空,长度是否符合, 输入是否正确 等等功能
# https://docs.djangoproject.com/zh-hans/2.2/ref/forms/api/
 

# 登录
class LoginView(View):
    # 定义view类中的get请求
    def get(self, request, *args, **kwargs):
        # is_authenticated 在Django中用来判断是否是登录状态
        # 如果是登录状态,则跳转到index页
        if request.user.is_authenticated:
            # HttpResponseRedirect 重定向
            # reverse 根据urls.py中配置的路径名称(urlpatterns path中的name),找到相应的url
            return HttpResponseRedirect(reverse("index"))
        # 如果不是登录状态,则返回登录页面,同时显示图片验证码
        dynamic_form = DynamicLoginForm()
        # 将动态验证码传递到前端页面
        return render(request,"login.html",{"login_form": dynamic_form})
    
    # 定义view类中的post请求
    def post(self,request,*args, **kwargs):
        # request.POST 用来接收从前端表单中传过来的数据
        login_
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值