1、入门案例。本质上还是一个socket

from flask import Flask,request
#### 
app=Flask(__name__)
app.debug=True ####配置路由
@app.route('/')
def login():
return "hello world"

####设置监听端口号
if __name__=='__main__':
app.run(host='127.0.0.1', port=8080)
app.config['Debug'] = True

2、flask 底层调用了wsgi 和 jinja2 煊染模板(html)。接受数据方式有post 和 get 方式。render_template负责返回

from __init__ import app
from flask import request ### 和之前用到的不一致
from flask import render_template
from model.modelapi import main_version @app.route('/login',methods=['GET', 'POST'])
def fun_login():
user = {'nickname': 'Miguel'} # fake user
if request.method=='GET': ####get 提交获取的数据方式
# data = request.args.to_dict() # post request.json ,request.args
name = request.args.get("name")
age = request.args.get("age")
# print(name)
return render_template("login.html", user=user)
elif request.method=='POST': ## post提交使用form 接受数据
data =request.form.to_dict() #
name =data['username']
passwd = data['passwd']
print(name)
print(passwd)
if name =='admin' and passwd=='123456':
return render_template("query.html", user=name) else:
return render_template("login.html", user=user)
else:
return "不支持的请求方法"

3、 flask   jinja2  可以接收变量、字典,也可以使用循环  user={'nickname':"tests"}l

在html 中 变量使用{{ user }}  也可以使用if 等判断语句.

{ % if  statement %}  结束条件为 {% endif%},

render_template("login.html", user=user)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% if user.nickname %}
<title>{{user.nickname}}</title>
{% else %}
<title>Welcome to xiajinqi</title> #如果没有传入参数,则显示welcome to microblog
{% endif %} </head>
<body>
<form action="http://127.0.0.1:8080/login" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="passwd"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>

3、 fjinja2  中for 循环

列表:{% for  i  in   list  %}   html   {% endfor %}

字典:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<tr><th>版本号</th></tr>
{% for i in resutl %}
<tr><td>{{ i }}</td></tr>
{% endfor %} </table>
</body>
</html>
{% for key, value in my_dict.iteritems() %}
<dt>{{ key|e }}</dt>
<dd>{{ value|e }}</dd>
{% endfor %}

参考文档:https://www.cnblogs.com/yanzi-meng/p/8342798.html

4、flask   MTV 分层的原理

创建flask架构以后,会自动生成一个templates 文件。手工创建view(路由和函数)  model(连接数据库等其他等)

新建一个__init__.py :

from flask import Flask
### 使用Flask架构
app = Flask(__name__)
app.debug='True' #### 引用view 也就是路由函数 将路由 信息迁移到views
from view.view import * ###第一个view 为view包。第二个view 是view.py #### ##将启动的端口服务迁移到harbor.py
##if __name__ == '__main__':
## __init__.app.run(host='127.0.0.1',port=8081)

harbor.py  需要引用同级别文件 中的某个变量 from  文件名 import  变量名字或者函数名字类名

from  __init__ import app

if __name__ == '__main__':
app.run(host='127.0.0.1',port=8080)view

view 也需要引用app.引用第一级别文件直接引用即可。引用同目录下的文件。包名.文件名即可

from __init__ import app
from flask import request
from flask import render_template
from model.modelapi import main_version @app.route('/login',methods=['GET', 'POST'])
def fun_login():
user = {'nickname': 'Miguel'} # fake user
if request.method=='GET':
# data = request.args.to_dict() # post request.json ,request.args
name = request.args.get("name")
age = request.args.get("age")
# print(name)
return render_template("login.html", user=user)
elif request.method=='POST':
data =request.form.to_dict() #
name =data['username']
passwd = data['passwd']
print(name)
print(passwd)
if name =='admin' and passwd=='123456':
return render_template("query.html", user=name)

至此我们实现了MTV分离

python flask 入门的更多相关文章

  1. Python Flask Web 框架入门

    Python Flask 目录 本文主要借鉴 letiantian 的文章 http://www.letiantian.me/learn-flask/ 一.简介 二.安装 三.初始化Flask 四.获 ...

  2. 比我的脸还干的gan货——Python Flask Web 框架入门

    Flask是一个轻量级的基于Python的web框架. 本文适合有一定HTML.Python.网络基础的同学阅读. 1. 简介 这份文档中的代码使用 Python 3 运行.是的,所以读者需要自己在电 ...

  3. Flask入门HelloWorld

    Flask入门HelloWorld Flask官网:http://flask.pocoo.org/ Flask中文翻译:http://dormousehole.readthedocs.io/en/la ...

  4. Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏

    一.Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架. Python中,同样可以使用Bootstrap. 1. 导入Bootstrap库 from flask_b ...

  5. Python从入门到精通系列文章总目录

    Python最新全套课程(8月中旬开的课),共四个月.所有课件,项目源码,课后习题和答案都包括在内. 包括:Python实战项目引入.Python基础.爬虫基础.爬虫库.Scrapy爬虫框架.动态页面 ...

  6. Flask入门和快速上手

    目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...

  7. Python之入门篇1

    一.安装python解释器 官网: https://www.python.org/downloads/windows/ 自行下载安装,添加环境变量 #测试安装是否成功 windows --> 运 ...

  8. Flask 入门一( flask 框架和 flask-script 库)

    Flask 入门一( flask 框架 和 flask-script 库) 一.Flask框架: 1.简介 Flask是一个非常小的Python Web框架,被称为微型框架:只提供了一个稳健的核心,其 ...

  9. Flask入门 flask结构 url_for 重定向(一)

    Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ​ ubuntu系统 sudo apt-get install python-virt ...

随机推荐

  1. jenkins自动化pipline的ci/cd流水线

    pipeline { agent any tools { //工具必须预先在jenkins中预配置 maven 'mvn' jdk 'jdk' } stages { stage('Env') { st ...

  2. Android开发-适配器

    适配器非常关键,它是连接页面和和数据源之间的桥梁,通过适配器,可以将数据库中的数据显示在页面上. 记账本适配器 记账类型选择适配器 日历选择适配器 还有图标适配器等

  3. 学习JAVAWEB第五天

    # 今日内容 1. JavaScript基础 ## JavaScript: * 概念: 一门客户端脚本语言 * 运行在客户端浏览器中的.每一个浏览器都有JavaScript的解析引擎 * 脚本语言:不 ...

  4. BOM与DOM之DOM操作

    目录 一:DOM操作 1.DOM介绍 2.DOM标准规定HTML文档中的每个成分都是一个节点(node): 3.DOM操作需要用关键字 二:查找标签 1.id查找 类查找 标签查找(直接查找) 2.i ...

  5. Android中四大组件

    Activity  BroadCast Receiver 广播接收者 Service  服务 Content Provider 内容提供者   四大组件都需要在清单文件里面配置一下

  6. ◆JAVA加密解密-DES

    DES算法提供CBC, OFB, CFB, ECB四种模式,MAC是基于ECB实现的. 一.数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后 ...

  7. spring5+Struts2+hibernate5

    一,加jar包 加入顺序,个人推荐,spring->struts2->hibernate spring的jar包:基本包共21个+用到的aspectj注解的包2个+日志包1个 ------ ...

  8. visual studio自动向量化

    //////////////////////////////////////////////////*SSE 和 AVX 每个都有16个寄存器SSE 有 XMM0 ~ XMM15,是128bitAVX ...

  9. Solution -「ARC 126F」Affine Sort

    \(\mathcal{Description}\)   Link.   给定 \(\{x_n\}\),令 \[f(k)=\left|\{(a,b,c)\mid a,b\in[0,c),c\in[1,k ...

  10. kubernetes之数据管理

    volume emptyDir [machangwei@mcwk8s-master ~]$ kubectl apply -f mcwVolume1.yml #部署emptydir pod/produc ...