当前位置: 首页 > news >正文

完成登录功能,用session记住用户名

1.js:设置return

function fnLogin() {
    var oUname = document.getElementById("uname")
    var oUpass = document.getElementById("upass")

    var oError = document.getElementById("error_box")

    oError.innerHTML="<br>"
    if (oUname.value.length > 20 || oUname.value.length < 6) {
        oError.innerHTML = "请输入用户名6-20位字符"
       isErrer = false
        return isErrer;
    }else if ((oUname.value.charCodeAt(0)>=48)&&(oUname.value.charCodeAt(0)<=57)){
        oError.innerHTML="用户名首字母必须是字母"
       isErrer = false
        return isErrer;
    }else for(var i=0; i<oUname.value.length;i++){
        if((oUname.value.charCodeAt(i)<48)||(oUname.value.charCodeAt(i)>57)&&(oUname.value.charCodeAt(i)<97)||(oUname.value.charCodeAt(i)>122)){
            oError.innerHTML="用户名必须为字母或数字";
            isErrer = false
            return isErrer;
        }

    }




    if (oUpass.value.length > 20 || oUpass.value.length < 6) {
        oError.innerHTML = "请输入密码 6-20位字符"
         isErrer = false
            return isErrer;
    }


        window.alert("登录成功")

}

2.html:设置

a.form

b.input

{% extends 'switch.html' %}

{% block logintitle %}欢迎来到登录界面,请登录{% endblock %}
{% block loginhead %}<script type="text/javascript" src="../static/js/login.js"></script>{% endblock %}
{% block loginbody %}
 <form action="{{ url_for('login') }}" method="post">
    <p id="meto">中国标准时间</p>
<script>document.getElementById("meto").innerHTML = Date()</script>
<div id="container" style="width: 300px  ">

    <div id="header" style="background-color: darkorange"><h2 align="center">登陆界面</h2></div>

    <div id="content">

            <p align="center">用户名:<input id="uname" type="text" name="user" placeholder="请输入账号">

            </p>
            <p align="center"> 密码&nbsp<input id="upass" type="password" name="psw" placeholder="请输入密码"></p>

            <br>
            <div id="error_box"><br>
            </div>
            <input type="radio" value="stu">学生
            <input type="radio" value="tea">老师
            <br>

            <input type="checkbox" value="true">记住密码 <a href="">登陆遇到问题</a><br>

         <p align="center"><button type="submit" onclick="return fnLogin()">登录</button></p>
            &nbsp&nbsp&nbsp



    </div>

    <div id="footer" style="background-color: darkgoldenrod"><h3 align="center">版权@</h3></div>
</div>
{% endblock %}

py:

  1. @app.route设置methods
  2. GET
  3. POST
    1. 读取表单数据
    2. 查询数据库
      1. 用户名密码对:
        1. 记住用户名
        2. 跳转到首页
      2. 用户名密码不对:
        1. 提示相应错误。
@app.route('/login/',methods=['GET','POST'])# 跳转登陆,methods定义它有两种请求方式
def login():
    if request.method == 'GET':
      return render_template('login.html')
    else:
        username = request.form.get('user')
        password = request.form.get('psw')
        user = User.query.filter(User.username == username).first()  # 判断用户名是否存在
        if user:
            if
            return   redirect(url_for('switch'))
        else:
            return '用户名不存在'

session:

  1. 从`flask`中导入`session`
  2. 设置`SECRET_KEY`
  3. 操作字典一样操作`session`:增加用户名`session['username']=`username
from flask import session
config.py
import os
SECRET_KEY = os.urandom(24)
session['user'] = username

 

转载于:https://www.cnblogs.com/GAODASHANG/p/7881179.html

相关文章:

  • 英语(1)——8种时态
  • javaweb入门(使用SQLserver2008 R2数据库)
  • 杯具的rm 99*
  • grant 权限 on 数据库对象 to 用户
  • 建立类似复合主键的唯一约束, 建立前查找违反多列唯一约束的记录
  • centos 7.2部署cloudstack4.9 ceph0.94
  • FireFox 7/8 上传前预览图片
  • sqoop: mysql to hive
  • 六、CentOS 6.5 下Nginx的配置
  • JS判断浏览器类型及版本
  • 【框架学习与探究之依赖注入--Autofac】
  • 由windows的Alt+Tab键联想到的数据结构
  • 原生js解决简单轮播图的切换
  • MDCC印象之二:芒果的味道
  • ORA-00600: internal error code, arguments: [kgl-no-mutex-held]
  • 2017届校招提前批面试回顾
  • CSS中外联样式表代表的含义
  • Docker入门(二) - Dockerfile
  • es6(二):字符串的扩展
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Javascripit类型转换比较那点事儿,双等号(==)
  • jQuery(一)
  • JS数组方法汇总
  • js算法-归并排序(merge_sort)
  • JS题目及答案整理
  • Median of Two Sorted Arrays
  • nodejs:开发并发布一个nodejs包
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SSH 免密登录
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 浮现式设计
  • 给新手的新浪微博 SDK 集成教程【一】
  • 前端设计模式
  • 数据可视化之 Sankey 桑基图的实现
  • 听说你叫Java(二)–Servlet请求
  • 阿里云重庆大学大数据训练营落地分享
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #单片机(TB6600驱动42步进电机)
  • $.ajax中的eval及dataType
  • (2015)JS ES6 必知的十个 特性
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)Controller接口控制器详解(三)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转) RFS+AutoItLibrary测试web对话框
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET程序员迈向卓越的必由之路
  • /usr/bin/env: node: No such file or directory
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛