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. Web安全防护(二)

    点击劫持 点击劫持,也称UI覆盖攻击 1.1 iframe覆盖攻击 黑客创建一个网页,用iframe包含了目标网站,并且把它隐藏起来.做一个伪装的页面或图片盖上去,且按钮与目标网站一致,诱导用户去点击 ...

  2. 在build中配置resources,来防止我们资源导出失败的问题

    <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> < ...

  3. 在ajax请求中,contentType 和 dataType 的区别?

    一.在ajax请求中,contentType 和 dataType 的区别? 1.contentType 内容类型. 1.1默认是 "application/x-www-form-urlen ...

  4. 火爆的文字游戏你玩了吗?「GitHub 热点速览 v.22.06」

    不知道你有没有被 Wordle 这款游戏刷屏,在本期热点速览的特推部分选了一个 React 编写的开源版本同你分享,而本次公众号摘要也是一个提示, 只不过这个只能盲猜了.别小瞧 Wordle 这个游戏 ...

  5. JVM学习五:性能监控工具

    一.系统性能监控 系统性能工具用于确定系统运行的整体状态,基本定位问题所在. Linux – uptime • 系统时间 • 运行时间 n 例子中为7分钟 • 连接数 n 每一个终端算一个连接 • 1 ...

  6. IAAS, SAAS, PAAS

    原文是Pizza‐as‐a‐Service: a detailed view,用来类比Cloud Service Models.出处来自于Data Sovereignty and the Cloud ...

  7. ubuntu关机重启命令介绍

    转载请注明来源:https://www.cnblogs.com/hookjc/ 重启命令: 1.reboot    2.shutdown -r now 立刻重启(root用户使用)    3.shut ...

  8. 转载_最值得阅读学习的10个C语言开源项目代码

    "源代码面前,了无秘密",阅读优秀代码无疑是开发人员得以窥见软件堂奥而登堂入室的捷径.本文选取10个C语言优秀开源项目的代码作为范本,分别给予点评,免去东搜西罗之苦,点赞!那么问题 ...

  9. byte溢出栗子

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11634402.html byte溢出测试: byte b1 = (byte) 127; byt ...

  10. H5架构和原生架构的区别

    1.App的3种开发方式 表面上看,手机App都是同样的东西,就是手机上的应用程序,点击图标就能运行,但是它们的底层技术不一样.按照开发技术,App可以分成三大类.原生应用(简称nativeApp), ...