Flask简介及微框架介绍
Flask是一个微框架,主要面向需求简单的小应用
小应用值得是只有简单的2~3个功能的网络应用等,而Django更加适合于大型综合的项目,并为其提供一站式开发服务。
Flask让开发者来抉择如何存储数据等操作,随意性更强。
针对非Django框架的最流行的ORM,Flask目前在数据库存储方面采用的是SQLAIchemy,当然也有很多其他的选择,比如DynamoDB和MongoDB,亦或是像LevelDB和SQLite这样的简单本地持久化。
Flask创始于2010年,尽管Flask的历史较短,但它能够从以前的框架学到一些东西并且将它的目标设定在了小型目标上。
它在一些仅有一两个功能的小型项目上得到了大量应用,比如httpbin这样的项目,简单但非常强大,是一个帮助debug和测试HTTP的库。
微架构服务
简单地说,就是将整个Web应用组织成为一系列小的Web服务。
“微”并不是将我们开发的整个web工程项目写在一个Python脚本文件中(当然也是可以的)。
“微框架”的核心意图是将web工程项目的核心部分进行高度集中并且尽量简单,从而在整个web工程中形成一个独立的部分,同时其余部分可以根据我们的需求任意扩展。
Flask框架的特点
- Flask框架开发非常简洁
- 简单并快速的安装、启动。
然后这里是刚开始模仿CSDN界面是做的尝试,下面是登录界面:
from flask import Flask, render_template,request,Response, session
import config
from config_class import *
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'AAABBBCCC'
# 是使用config.py文件定义配置
app.config.from_object(config)
# 是使用class定义配置DEBUG = True
@app.route('/') # URL路由
def index():
return render_template('index.html')
@app.route("/login.do", methods=['POST','GET'])
def login():
userName = request.form.get('userName')
userPwd = request.form.get('userPwd')
if userName == 'zhangsan' and userPwd == '123456':
session['user'] = 'zhangsan'
return render_template('index.html')
elif userName != None and (userName != 'zhangsan' or userPwd != '123456'):
return render_template('login.html', message='用户名或密码错误!')
return render_template('login.html')
pass
if __name__ == "__main__":
app.run(host=app.config['SERVER_ADDR'], port=app.config['SERVER_PORT'], debug=True)
pass
然后是配置文件:
'''
自定义配置文件
'''
DEBUG = True
SECRET_KEY = 'AAAAAAAA'
PAGE_SIZE = 10
SERVER_ADDR = '10.0.14.110'
SERVER_PORT = 80
然后是一个简单的界面,加入了一个登录功能:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
</script>
<style type="text/css">
a{
margin-right: 12px;
}
</style>
</head>
<body style="min-width:1200px;padding: 0px;margin: 0;background-color: lavenderblush;">
<div id="header" style="...">
<div style="width: 90%;border: solid 0px red;margin-left: 5%;padding: 6px" align="left">
<div style="border: solid 0px red;padding: 0px;float:left"></div>
<div style="border: solid 0px red;padding: 0px;float:right">
<a href="/login.do">
{% if session.get('user') == None %}
登录
{% else %}
{{ session.get('user') }}
{% endif %}
</a>
</div>
</div>
</div>
<div id='main' style="width: 90%;border: solid 0px red;margin-left: 5%;" align="center">
<div id='left' style="min-height:800px;background-color: white;width: 14%;float:left;border: solid 0px red;margin: 4px;">
<ul>
<li><a href="table_lianliankan.html" target="innerFrame">人工智能</a></li>
<li>人工智能</li>
<li>我用Python</li>
<li>技术大牛</li>
<li>人工智能1</li>
<li>人工智能2</li>
<li>人工智能3</li>
<li>人工智能4</li>
<li>人工智能5</li>
<li>人工智能6</li>
<li>人工智能7</li>
<li>人工智能8</li>
<li>人工智能9</li>
</ul>
</div>
<div id='middle' style="min-height:800px;background-color: white;width: 60%;float:left;border: solid 0px red;margin: 4px;">
<div style="width: 100%;">
a
<!--
<iframe border="0" scrolling="no" width="100%" height="800px" name="innerFrame" src="html_form.html"></iframe>
-->
</div>
</div>
<div id='right' style="min-height:800px;background-color: white;width: 24%;float:right;border: solid 0px red;margin: 4px;">
<div style="width: 100%;">aaaa</div>
</div>
</div>
<div style="background-color: #FF0000;position: fixed;left: 8px;top:200px;height: 400px;">
左广告
</div>
<div style="background-color: #FF0000;position: fixed;right: 8px;top:200px;height: 400px;">
右广告
</div>
</body>
</html>
在加入登录功能之后,窗口会切换到登录信息的界面,下面这个界面就是登录界面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{{ url_for('static',filename="style.css",_external=True) }}" />
</head>
<body>
<form action="/login.do" method="post">
<table>
<span color="blue">{{ message }}</span>
<tr>
<td>用户名:</td><td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td><td><input type="password" name="userPwd"></td>
</tr>
<tr>
<td></td>
<td>
<input type="reset" value="重置">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
点击运行之后会弹出浏览器窗口,如果虚拟环境有问题,运行之后不会弹出浏览器窗口,需要在terminal终端运行,此时,浏览器页面会出现登录功能,因为博主在登录的时候保存了登录信息,所以是显示登录完成的信息,也就是显示登录用户之后的用户名,而不是初始的“登录”字样。如下图所示: