flask专题-小说网站开发三(注册,登录)

news/2024/5/20 22:20:45/文章来源:https://blog.csdn.net/qq_44253015/article/details/104445778

前面几篇准备好了数据库,数据,现在开始往后开发,部分可能与网上他人使用方式不同,本人第一次做,功能都实现了,这一篇开发注册与登录,先贴样式

前端

  • 登录:
    登录
  • 注册:
    注册
    前端样式如上图
  • 注册操作:用户输入昵称,账号,密码和确认密码,确认后将前端数据传递到后台进行验证,昵称不能超过10个汉字,账号由纯数字组成,密码不能超过8位,账号唯一,昵称不唯一。
  • 登录操作:用户输入账号密码,后台验证账号所对应密码是否一致,不一致使用flash消息闪现传递提示消息。
前端具体代码:

新建base.html作为模板

  • base.html
<!-- 模板页面,网站图标,菜单栏和侧边栏都在这儿定义 -->
{% extends "bootstrap/base.html" %}
<!-- 网站标题 -->
{% block title %}{{ super() }} {% endblock %}
<!-- 头部 -->
{% block head %}
<!-- 继承父类 -->
{{ super() }}
<!-- 网站图标,图片在static/images文件夹下 -->
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}"type="image/x-icon">
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}"type="image/x-icon">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
{% endblock %}
{% block scripts %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}
{% block navbar %}
{% endblock %}
<!-- 继承其他页面内容 -->
{% block content %}
{{ super() }}
{% endblock %}

新建reg.html位注册页面前端

  • reg.html

{% block head %}<!-- 注册页面 -->
{% endblock %}
<link rel="stylesheet" href="/static/bootstrap.min.css"/>
{% block content %}
<html>
<body style="background-image: url('/static/images/5f7be1393c54b2920ce2677e08524d8e.jpg')">
<div class="container" style=" text-align: center; background-color: #CCCCCC; width: 500px; height: 390px;margin-top: 180px; opacity: 90%; border-radius:20px;" >
<form method="post" action="/reg" class="form" style="padding-top: 20px"><label style="font-size: 28px; color: #CCFFFF;">欢迎注册Angel文学</label><label style="font-size: 20px; color: #FFFF99;">专业的书籍导航</label><hr><label style="height: 2px;">&nbsp;</label><br><label style="font-size: 16px; color: #0000FF;font-family: STHeiti">输入昵称&nbsp;&nbsp;</label><input type="text" name="usn" style="width: 250px; height: 35px; font-family: KaiTi; border-radius:20px; text-align: center;" required placeholder="不超过10个汉字"><br><label style="height: 10px;">&nbsp;</label><br><label style="font-size: 16px; color: #0000FF;font-family: STHeiti">输入账号&nbsp;&nbsp;</label><input type="text" name="account" style="width: 250px; height: 35px; font-family: KaiTi; border-radius:20px; text-align: center;" required placeholder="纯数字组成"><br><label style="height: 10px;">&nbsp;</label><br><label style="font-size: 16px; color: #0000FF; font-family: STHeiti">输入密码&nbsp;&nbsp;</label><input type="password" name="pwd" style="width: 250px; height: 35px; font-family: KaiTi; border-radius:20px; text-align: center;" required placeholder="不超过8位数"><br><label style="height: 10px;">&nbsp;</label><br><label style="font-size: 16px; color: #0000FF; font-family: STHeiti">确认密码&nbsp;&nbsp;</label><input type="password" name="pwd2" style="width: 250px; height: 35px; font-family: KaiTi; border-radius:20px; text-align: center;" required placeholder="确认您的密码"><br><label style="height: 2px;">&nbsp;</label><hr><label style="font-family: KaiTi; color: #985f0d; font-size: 15px; ">已有账号请&nbsp;</label><label style="font-size: 16px; color: #FF3300; padding-right: 50px"><a href="/login">登录</a></label><input type="submit" value="注册" style="width: 100px; text-align: center;" class="btn btn-primary"><!-- 后台flash函数的返回信息 -->{% for message in get_flashed_messages() %}{{ message }}{% endfor %}
</form>
</div>
</body>
</html>
{% endblock %}

新建login.html位登录页面
login.html


{% block head %}
{% endblock %}
<link rel="stylesheet" href="/static/bootstrap.min.css"/>
{% block content %}
<html>
<body style="background-image: url('/static/images/5f7be1393c54b2920ce2677e08524d8e.jpg')">
<div class="container" style=" text-align: center; background-color: #CCCCFF; width: 500px; height: 350px;margin-top: 200px; opacity: 90%; border-radius:20px;" >
<form method="post" action="/login" class="form" style="padding-top: 30px"><label style="font-size: 28px; color: #CCFFFF;">欢迎登录Angel文学</label><label style="font-size: 20px; color: #FFFF99;">专业的书籍导航</label><hr><label>&nbsp;</label><br><label style="font-size: 16px; color: #0000FF;font-family: STHeiti">账号&nbsp;&nbsp;</label><input type="text" name="account" style="width: 250px; height: 35px; font-family: KaiTi; border-radius:20px; text-align: center;" required placeholder="输入您的账号"><br><label>&nbsp;</label><br><label style="font-size: 16px; color: #0000FF; font-family: STHeiti">密码&nbsp;&nbsp;</label><input type="password" name="pwd" style="width: 250px; height: 35px; font-family: KaiTi; border-radius:20px; text-align: center;" required placeholder="输入您的密码"><br><label style="padding-top: 5px;">&nbsp;{% for message in get_flashed_messages() %}{{ message }}{% endfor %}</label><br><hr><label style="font-family: KaiTi; color: #985f0d; font-size: 15px; ">没有账号请&nbsp;</label><label style="font-size: 16px; color: #FF3300; padding-right: 50px; "><a href="/reg">注册</a></label><input type="submit" value="登录" style="width: 100px; text-align: center;" class="btn btn-primary">
</form>
</div>
</body>
</html>
{% endblock %}

这一行代码为接收后端的闪现消息,并显示到设定位置
{% for message in get_flashed_messages() %} {{ message }} {% endfor %}

后端

先定义各表,实现数据库连接,使用SQLalchemy来管理数据库,先导入sqlalchemy
from flask_sqlalchemy import SQLAlchemy
导入失败的话需要先进行安装
pip install flask-sqlalchemy
导入之后进行配置,先进行实例化对象db = SQLAlchemy(app)
在flask中定义配置方法,导入到实例中

class Config(object):SQLALCHEMY_DATABASE_URI = "mysql://book:book@localhost:3306/book"SQLALCHEMY_TRACK_MODIFICATIONS = FalseSECRET_KEY = 'bvksdcjavcvavskbaleb'SQLALCHEMY_POOL_SIZE = 10SQLALCHEMY_POOL_TIMEOUT = 10

解释:

  • 1、连接数据库配置,数据库MySQL://用户名:密码@host主机ip:3306端口号/数据库名称
  • 2、是否跟随数据库的变动进行调整
  • 3、随意输入交换码,查询操作要使用
  • 4、 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。
  • 5、超时时间
    将配置方法加载到实例app中app.config.from_object(Config)
定义用户表:
class Users(db.Model):#表名__tablename__ = 'user'id = db.Column(db.Integer,autoincrement=True,primary_key=True)#用户名username = db.Column(db.String(50), default='易水寒')#用户账号account = db.Column(db.Integer, unique=True, nullable=False)#用户密码password = db.Column(db.String(50), nullable=False)perference = db.Column(db.String(50), nullable=True)major = db.Column(db.String(50), nullable=True)

定义登录路由和视图函数:
login,“/”为进入网站默认为登录界面,methods为此路由的请求方式,默认GET,
request.method返回此次请求的请求方式,session方法用来保存用户信息,在其他页面显示,user = Users.query.filter(Users.account == account, Users.password == password).first()这句话的作用为在数据库查询此账号与密码是否一致

@app.route('/')
@app.route("/login", methods=["POST", "GET"])
def login():# 如果请求方式为POST,已经在前端设置为POST方式if request.method == 'POST':# 获取前端传来的值,包括用户名和密码account = request.form.get('account')password = request.form.get('pwd')# 在用户表里查找是否存在此用户,存在保存用户名和密码传递到前端,不存在使用flash提示错误信息user = Users.query.filter(Users.account == account, Users.password == password).first()if user:username = Users.query.filter(Users.account == account, Users.password == password).first()session['account'] = accountsession['password'] = passwordsession['username'] = username.usernamesession['user_id'] = username.idprint('用户登录--', username.username)# 延长保存时间# session.permanent = True# 账号密码正确,重定向到首页return redirect(url_for("index"))else:flash("账号或密码不正确!")else:return render_template("login.html")return render_template("login.html")

定义注册路由和视图函数:
reg,在这里进行前端数据的判断与格式控制

@app.route("/reg", methods=["POST", "GET"])
def reg():if request.method == 'POST':username = request.form.get('usn')account = request.form.get('account')password = request.form.get('pwd')password2 = request.form.get('pwd2')print('用户注册--', username)if password != password2:flash("两次输入密码不一致")elif len(password) > 8:flash("密码太长")elif len(str(username)) > 10:flash("昵称过长")elif Users.query.filter(Users.account==account).first():flash("账号已被注册")elif str(account).isdigit():new_user = Users(username=username, account=account, password=password, id=None)db.session.add(new_user)db.session.commit()return redirect(url_for("login"))else:flash("账号由纯数字组成")else:return render_template("reg.html")return render_template("reg.html")

好了,以上就是注册与登录的相关操作,若有不当之处还请指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_836997.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flask专题-小说网站开发四(完结)

之前断更了&#xff0c;小说网站改成基于协同过滤的图书推荐系统了&#xff0c;并已经写完&#xff0c;传到gitee了 链接 实现的功能 推荐一块使用协同过滤的思想&#xff0c;计算物品之间的相似度 web框架使用Flask&#xff0c;小说还支持在线看的 主要功能截图 用户基本模…

帝国CMS7.5开发的小说源码自适应网站源码

全网第一版帝国内核CMS7.5开发的小说源码站自适应网站源码 源码介绍 前期没有章节数据 自带采集火车头采集规则 演示地址 演示地址&#xff1a;http://www.txtzn.com

软件工程课程设计-ch小说网站

CH小说网站 [软件开发计划书、需求分析] 作者&#xff1a;陈春旭&#xff0c;习志鹏 目录 1&#xff0e;引言&#xff08;Introduction&#xff09; 4 1.1 背景&#xff08;Background&#xff09; 4 1.2 目的&#xff08;Purpose&#xff09; 4 1.3 范围&#xff08;Scope&am…

HBuilderX打包web网站之wap2app设置底部菜单tabBar

上面是真实案例&#xff0c;首页、在看、我的就是我设置的菜单&#xff0c;还可以设置图标&#xff0c;填写图片网络地址就行。 下面是代码&#xff0c;可以直接用&#xff1a; 第一步&#xff0c;先下载2个文件或者复制也行&#xff0c;那就新建吧: 分别新建一个css文件&am…

小说站源码(带自动采集开源小说网站源码)

小说网站源码是一套文本自动聚合搜索和展示构建系统&#xff0c;设计用于编写由许多较小的文本文档组合而成的小说网站。它使用了受Markdown启发的最小格式语法&#xff0c;并添加了用于注释、概要和交叉引用的元数据语法。它被设计成一个简单的文本编辑器&#xff0c;允许轻松…

SpringBoot+ Mybatis 开发一个读书网站

项目描述 本项目为javaweb课程设计作业&#xff0c;开发了一个类似于豆瓣读书的书友交流网站。 效果图 项目结构 mapper和pojo可以用generator自动生成&#xff0c;我们只需编写controller就可以了 贴一个userController的代码&#xff0c;其他的都大同小异 package com.te…

基于SSM甜品销售网站

关于开发环境 1. jdk1.8 2. myeclipse10 3. tomcat8 4. mysql utf-8 使用技术 1. ssh 框架 2. log使用的是log4j 3. 自定义properties 4. 字符集 utf-8 5. 中文乱码使用自定义过滤器 6. 分页使用的是pager-taglib框架 7. 后台登陆使用的是frameset框架 课题设计仅供参考学习使用…

旅游管理网站前台+后台

这个网站使用JSPServlet&#xff0c;虽说是JSPServlet但是我看了看&#xff0c;大部分的代码逻辑都是写在JSP里面的。。 这个适用于毕业设计的&#xff0c;简单改一改可以适用于很多网站&#xff0c;可以改后台下拉列表的类型&#xff0c;把这个改成门户网站也不错&#xff0c;…

java jsp在线小说网站

采用了jspservlet来写&#xff0c;前端部分用了少量的js和jQuery处理&#xff0c;数据库用了MySQL&#xff0c;开发平台是myeclipse。发布文章时直接插入数据库会没有分段&#xff0c;这里的解决办法是引入第三方工具wangEditor&#xff08;wangEditor 是一款基于JavaScript和c…

校园失物招领网站

开发环境是Eclipse none&#xff0c;Mysql5.6数据库&#xff0c;Spring MVC框架&#xff0c;jdk1.7&#xff0c;Tomcat 8.0.27,静态页面是我参照网上设计的&#xff0c;系统功能基本完善&#xff0c;目前还没有发现有需要解决的bug 下载下来后&#xff0c;解压开把jar目录里面的…

CentOS服务器搭建WordPress个人博客网站

WordPress 是世界上使用最广泛的博客系统之一&#xff0c;是一款开源的PHP软件。有丰富的插件模板资源&#xff0c;使用WordPress可以快速搭建独立的博客网站。 本教程软件环境基于CentOS 6.8 64位&#xff0c;从配置LNMP环境开始一步步搭建属于你自己的WordPress博客网站。 …

基于腾讯云服务器搭建的一个简易的网站(ubuntu)

本文系湛江市岭南师范学院物联网俱乐部原创教学文章&#xff0c;转载请保留声明。 前言 本文将会带领大家去学习如何在云服务器上面部署&#xff0c;并且搭建自己的网站&#xff0c;从而让你拥有一个真正属于你自己的网站&#xff0c;不过此网站的内容比较简陋请广大网友勿笑&…

树莓派之搭建个人博客网站

树莓派之搭建个人博客网站前言一、树莓派配置1.1 window下软件安装1.2 设置静态IP&#xff08;可不设&#xff09;二、安装NTP进行自动对时2.1 换源2.2 NTP用法三、相关软件安装3.1 安装Nginx&#xff1a;3.2 安装SQLite33.3 安装PHP&#xff08;PHP7&#xff09;3.4 配置Nginx…

锚链接点击添加class_掌握文章锚文本技巧,快速提升网站优化效果

关键词锚文本链接肯定要做&#xff0c;有些人说内链导致被K站的原因&#xff0c;肯定是过度&#xff0c;不合理的内链建设&#xff0c;导致网站被K的这种说法&#xff0c;不正确&#xff0c;最多被降权&#xff0c;被K站的原因是服务器不稳定、采集文章、经常改动网站、使用作弊…

大型网站后台架构的Web Server与缓存

1.1 Web server Web server 用来解析HTTP协议。当web服务器接收到一个HTTP请求时&#xff0c;会返回一个HTTP响应&#xff0c;例如送回一个HTML页面。为了处理一个请求&#xff0c;web服务器可以响应一个静态页面或者图片。进行页面跳转&#xff0c;或者把动态响应的产生委托给…

Wss3入门(1):一步一步使用Windows SharePoint Service 3.0搭建Blog网站

开篇 Windows SharePoint Service 3.0内建了Blog模板&#xff0c;所以有些TX看到这个标题肯定觉得比较奇怪&#xff0c;认为Wss3只要一步就可以建好Blog网站了&#xff0c;没有什么好说的。其实&#xff0c;还是有些东西要修修改改的&#xff0c;一些东西的默认设置并不是我们…

个人网站上线

网址&#xff1a; http://cross.withiter.com/ 花了2周业余时间&#xff0c;终于可以上线了。网站用的最简单的JSP Servlet MongoDB开发的。很简洁。贴几张截图吧&#xff1a;

65个精心设计的富有灵感的电子商务网站案例

电子商务网站虽然现在很多&#xff0c;但是许多是复杂混乱的&#xff0c;而且也没有比较好的用户体验。这样就不能很好的吸引顾客&#xff0c;因此电子商务网站在设计上一定要有创意和美观的界面&#xff0c;今天给大家展示65个电子商务网站案例&#xff0c;这些网站设计都非常…

asp.net 网站纯静态化设计及其实现

引言&#xff1a;为减轻服务器压力&#xff0c;较少伪静态对CPU的消耗&#xff0c;下面使用了纯静态的方式提供站点访问&#xff01; 一、流程图如下 二、逐步分析 A.捕获404&#xff0c;获取请求地址 用户访问站点地址如下&#xff08;例如&#xff1a;www.yahoo.com/news/1.h…

55个RSS网站提交入口

字号&#xff1a;大 中 小 http://oumei.zhan.cn.yahoo.com 博客导航http://allblog.zhan.cn.yahoo.com 博客做好之后&#xff0c;如何推广博客就成了你要研究的问题。博客与网站不同之处在于提供了聚合功能的RSS&#xff0c;利用我下面为您提供的55个网站提交入口&#xff0c…