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. 搭建sublime.txt环境结合使用python

    { "cmd": ["python3", "-u", "$file"] }

  2. vue组件中使用watch响应数据

    在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: 普通用法: <template> //视图 <input v-mode ...

  3. C语言system函数

    我们今天来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system 功 能: 发 ...

  4. Java中静态变量与非静态变量的区别

    感谢大佬:https://www.cnblogs.com/liuhuijie/p/9175167.html ①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 ...

  5. 微服务技术栈简单介绍,Eureka和Ribbon的引入和使用

    一.了解微服务架构 1.微服务技术栈 整体框架 整体学习规划路线2.微服务与单体架构的区别 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 优势 结构简单 部署成本低 缺点 耦合度高, ...

  6. PHP面试常考内容之Memcache和Redis(1)

    你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...

  7. hashlib模块&日志模块

    内容概要 hashlib模块 logging模块 第三方模块下载 内容详细 hashlib模块 hashlib 是一个提供了一些流行的hash(摘要)算法的Python标准库.其中所包括的算法有 md ...

  8. ☆☆如何学习MATLAB☆☆

    大多数朋友第一次接触MATLAB一般都是在大学里面开设的MATLAB课程,第一次真正使用MATLAB是在自己的毕业论文中用到.所以对于MATLAB可以说是既爱又恨.爱,是因为使用MATLAB几乎可以实 ...

  9. Solution -「Gym 102979L」 Lights On The Road

    \(\mathcal{Description}\)   Link.   给定序列 \(\{w_n\}\),选择 \(i\) 位置的代价为 \(w_i\),要求每个位置要不被选择,要不左右两个位置至少被 ...

  10. Vue 源码解读(3)—— 响应式原理

    前言 上一篇文章 Vue 源码解读(2)-- Vue 初始化过程 详细讲解了 Vue 的初始化过程,明白了 new Vue(options) 都做了什么,其中关于 数据响应式 的实现用一句话简单的带过 ...