为了更好的理解web前后端的工作业务逻辑:本笔记记录用flask框架编写的一个最初级的代码实现简单的用户注册,登录场景:

初次进入首页,提示--游客,欢迎参观,有登录和注册选项,

登录成功后的用户,会显示欢迎(比如用admin用户登录):

页面代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
{% if session.name %}
<h3>您好,欢迎{{ session.name }}!</h3>
{% else %}
<h3>游客,欢迎参观<br><a href="login">请登录</a><br><a href="signin">请注册</a></h3>
{% endif %}
</body>
</html>

点击登录进入登录页面

填写错误的用户名或密码会有错误提示

页面代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="/login" method="POST">
<table>
<tr>
<th colspan="2">用户登录</th>
</tr>
<tr>
<th>用户名</th>
<td>
<input name="username" type="text" value="">
</td>
</tr>
<tr>
<th>密码</th>
<td>
<input name="passwd" type="text" value="">
</td>
</tr>
<tr>
<th colspan="2">
<input name="login" type="submit" value="登录">
</th>
</tr>
<tr>
<th colspan="2">
没有账号点击<a href="signin">注册</a>
</th>
</tr>
没有账号点击<a href="signin">注册</a>
</table>
{{ msg }}
</form>
</body>
</html>

没有账号可点击注册进入注册页面

注册信息输入不完整会有相关提示:

页面代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="/signin" method="POST">
<table>
<tr>
<th colspan="2">用户注册</th>
</tr>
<tr>
<th>用户名</th>
<td>
<input name="username" type="text" value="">
</td>
</tr>
<tr>
<th>密码</th>
<td>
<input name="passwd" type="text" value="">
</td>
</tr>
<tr>
<th>确认密码</th>
<td>
<input name="passwd1" type="text" value="">
</td>
</tr>
<tr>
<th colspan="2">
<input name="login" type="submit" value="注册">
</th>
</tr>
</table> {{ msg }}
</form> </body>
</html>

注册成功后会跳转至注册成功页面,点击立即登录可跳转至登录页面:

框架代码如下:

# -*- coding: utf-8 -*-
# @Time : 2019/4/28 20:39
# @Author : lc from flask import Flask, render_template, request, session, redirect, url_for
from Flask2.sqlite import sqlite_insert, sqlite_select
import sqlite3 # 引入数据库 app = Flask(__name__) # 创建一个Flask实例
app.secret_key = 'abcde11ef' # 设置session密钥 '''根路由支持POST和GET请求,进入index页面'''
@app.route('/', methods=['GET', 'POST'])
def hello_world():
return render_template('index.html') '''注册支持POST和GET请求,进入signin页面,合法的注册数据写入数据库'''
@app.route('/signin', methods=['GET', 'POST'])
def signin():
method = request.method # 获取请求方式
if method == 'GET':
return render_template('signin.html')
else:
user_name = request.form.get('username')
password = request.form.get('passwd')
password1 = request.form.get('passwd1')
if user_name and password and password1: # 判断必填项
if password == password1:
sqlite_insert(user_name, password) # 实例化数据库插入方法
succ = "注册成功"
return render_template('signin_success.html', msg=succ)
else:
err = "登录失败,两次密码输入不一致"
# 返回HTML可以添加模板语言,可以放在body里面用{{}}引入
return render_template('signin.html', msg=err)
else:
err = "请输入完整的注册信息"
return render_template('signin.html', msg=err) # '''登录支持POST和GET请求,进入login页面,合法发起请求后查询数据库进行数据匹配'''
@app.route('/login', methods=['GET', 'POST'])
def login():
method = request.method # 获取请求方式
if method == 'GET':
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('passwd')
result = sqlite_select(username, password) # 实例化数据库查询方法
print(result)
if result:
if username == result[1] and password == result[2]:
session['name'] = result[1] # 设置session值
return render_template('index.html')
else:
err = "登录失败,用户名或密码错误"
# 返回HTML可以添加模板语言,可以放在body里面用{{}}引入
return render_template('login.html', msg=err) if __name__ == '__main__':
app.run()

ps:用户注册后的密码会加密后再存入数据库,可调用以下方法对密码进行加密

import hashlib
def hash_code(pwd):
md5=hashlib.md5() # 获取MD5对象
md5.update(pwd.encode('utf-8')) #将传入的pwd编码后,更新MD5的状态
return md5.hexdigest() #返回十六进制的MD5码
if __name__ == '__main__':
print(hash_code(''))

# 输出结果:e10adc3949ba59abbe56e057f20f883e

Flask框架(2)--编写简单的用户注册--登录场景的更多相关文章

  1. express框架+jade+bootstrap+mysql开发用户注册登录项目

    完整的项目代码(github):https://github.com/suqinhui/express-demo express是基于Node.js平台的web应用开发框架,用express框架开发w ...

  2. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  3. flask框架~简易编写

    flaks框架: 先导报 from flask import Flask 重定向模块:redirect url_for是简易寻址跳转 jsonify强转为json格式 建立flask对象:app = ...

  4. 利用flask框架实现对用户的注册登录

    ------------------------------------(分割线)----------------------------------------------------------- ...

  5. hibernate与Struts框架结合编写简单针对修改练习

    失败页面fail.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  6. Python Flask框架路由简单实现

    Python Flask框架路由的简单实现 也许你听说过Flask框架.也许你也使用过,也使用的非常好.但是当你在浏览器上输入一串路由地址,跳转至你所写的页面,在Flask中是怎样实现的,你是否感到好 ...

  7. Flask框架 请求与响应 & 模板语法

    目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) F ...

  8. Flask框架登录日志模块编写

    web扫描器网站的框架搭建逐渐进入尾声,边搭建框架的时候负责前端的小姐姐也在完善页面设计,过两天就可以进行功能点的完善了. 在扫描器中我们用到了用户登录模块,想法是初始化一个账户和密码,比如说admi ...

  9. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

随机推荐

  1. LeetCode 317. Shortest Distance from All Buildings

    原题链接在这里:https://leetcode.com/problems/shortest-distance-from-all-buildings/ 题目: You want to build a ...

  2. sql server 交集,差集的用法 (集合运算)

    概述 为什么使用集合运算: 在集合运算中比联接查询和EXISTS/NOT EXISTS更方便. 并集运算(UNION) 并集:两个集合的并集是一个包含集合A和B中所有元素的集合. 在T-SQL中.UN ...

  3. Laravel Model updating&updated 事件使用注意事项

    1 触发条件 1.1 updating 1.1.1 如果字段无变化,不会触发此事件. 1.1.2 除非更改至少一个字段的值 2 事件逻辑不会覆盖 2.1 Trait 中定义事件如下 /** * The ...

  4. Mxnet框架搭建

    Mxnet框架搭建 小书匠 kindle  Mxnet是亚马逊开发的深度学习框架,和谷歌Tensorflow是同类型的框架. 1.安装Mxnet 这里只展示在线安装,源码编译安装等不演示:GPU安装与 ...

  5. IntelliJ IDEA实时代码模板

    首先,通过 Settings > Editor - Live Templates进入设置窗口 在Abbreviation:中设置缩写,在 Template text:中设置模板内容,通过 Cha ...

  6. sftp远程传输脚本

    该脚本主要是是批量修改文件名,然后传输文件到服务器#!/bin/bash #脚本名:sftp.sh while true do num=`cat test.txt|wc -l` ;a<=$num ...

  7. nginx 转发 header 数据丢失

    刚帮同事解决了个问题,记录一下,现象:放在header里面的数据,本地后台可以收到,集成可以收到,测试不行, 查看代码没问题,排除代码问题,比较集成和测试环境有何不同,发现集成环境是局域网访问,192 ...

  8. chtMultiRegionSimpleFoam求解器的热源不在边界上【翻译】

    翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/126777-chtmultiregionsimplefoa ...

  9. linux下如何让控制台程序后台运行

    方法1:./test & 方法2:(./test &) 方法3:nohup 和bg 方法4:screen -mS test /root/test   退出程序需要手动进入screen创 ...

  10. Flutter移动电商实战 --(47)详细页_Flutter_html插件的使用

    详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件 flutter webview plugin:这个不太好用 flutter_html:用这个插件 先解决之前一个 ...