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. 多选菜单shell脚本

    有 很多方法 可以读取Bash脚本中的用户输入. 但是,允许用户键入输入会带来一些问题. 主要问题是输入验证,您必须在其中考虑所有可能的输入. 解决此问题的一种简单方法是为Bash脚本创建一个多选菜单 ...

  2. docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。

    一.docker常用命令? 1. 常用帮助命令 1.1 docker的信息以及版本号 /* docker info 查看docker的信息 images2 docker本身就是一个镜像. docker ...

  3. Mysql8.0主从配置

    环境Centos7.6 ,mysql8.0 Mysql主从配置 1.1 配置环境: 本人在vm下做的实验,linux版本是centos的7.0版本,然后Mysql版本为此时较新的8.0.13版本.做最 ...

  4. JavaIO 思维导图

    网络搜集,万分感谢!

  5. PHP的这些基础知识你应该熟知

    PHP变量的值类型和引用类型 四种基本类型(int,float,string,boolean)以及复合类型(array)均为值类型,变量间的赋值传递的是值,相当于创建一个副本给新变量. 对象(obje ...

  6. request和session获取参数的区别

    说简单点 request对象和session对象的最大区别是生命周期. request request范围较小一些,只是一个请求. request对象的生命周期是针对一个客户端(说确切点就是一个浏览器 ...

  7. 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版

    技术背景 KML,是标记语言(Keyhole Markup Language)的缩写,最初由Keyhole公司开发,是一种基于XML 语法与格式的.用于描述和保存地理信息(如点.线.图像.多边形和模型 ...

  8. Solution -「洛谷 P4198」楼房重建

    \(\mathcal{Description}\)   Link.   给定点集 \(\{P_n\}\),\(P_i=(i,h_i)\),\(m\) 次修改,每次修改某个 \(h_i\),在每次修改后 ...

  9. C# 字符串计算MD5

    public static string ComputeMD5 (string text) // 计算字符串的 MD5 { System.Security.Cryptography.MD5Crypto ...

  10. 多端开发之uniapp开发app

    最近在给f做一些工具app,学习了不少关于uniapp编写android应用的知识. 首先,App应用的创建的时候要选择项目类型为uniapp类型.最开始我选择的是h5+项目,这种项目就比较容易写成纯 ...