#!/usr/bin/python
# -*- coding: UTF-8 -*- from flask import Flask, url_for
from flask import request
from flask_script import Manager
from flask import render_template
from threading import Thread
import requests
import json
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required, DataRequired
from flask import session
from flask import redirect
from flask import flash
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
import os
basedir = os.path.abspath(os.path.dirname(__file__)) app = Flask(__name__)
manager = Manager(app)
Bootstrap(app)
Moment(app)
########################################DB config start################################################################
app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
########################################DB config end################################################################
app.config['SECRET_KEY'] = 'hard to guess string' @app.route("/", methods=["GET"])
def index():
return '<h1>Hello World!</h1>' # 动态路由
@app.route("/user/<username>")
def get_username(username):
return '<h1>Hello, %s</h1>' % username # 获得请求参数:
@app.route("/getrequest")
def get_request_arg():
headers = request.headers
user_agent = request.headers.get('User-Agent')
return '<h1>geted request args is : %s </h1>' % user_agent @app.route("/getpostdata", methods=['GET', 'POST','GET'])
def get_post_data():
post_data = request.json
# post_data = request.form
return "<h1>post data is :%s</h1>" % post_data # get index.html
@app.route("/get_index_html")
def get_index():
return render_template("index.html") # get user.html and argument 动态路由并获取参数给模板
@app.route("/get_user_html/<user>")
def get_user(user):
return render_template("user.html", name=user) @app.route("/get_list_html")
def get_list():
item_list = ["python","java","c++","c#","django","flask"]
return render_template("list.html", lists=item_list) @app.route("/get_dict_html")
def get_dict():
dict = {"name":"panxueyan", "age":30,"address":"beijing"}
# f = client_for_flask.post_data
return render_template("dict.html", dicts=dict) def test_mehod():
# r = requests.get("http://127.0.0.1:9000/getrequest")
# print(r.text)
# print("call done")
# return "donee" url = "http://127.0.0.1:9000/getpostdata" data = {"result": "ok"}
data = json.dumps(data)
r = requests.post(url, json=data)
print(r.text)
print("hello call method") # 利用多线程 把函数方法传入模板执行
@app.route("/call_method_html")
def call_method():
t = Thread(target=test_mehod)
method = t.start
return render_template("call_method.html", methods=method) # 过滤器在模板中的使用
@app.route("/filter_useage")
def filter_use():
my_dict = {"name":"panxueya\n","age":30,"address":"<h1>beijing</h1>","daxieshouzimu":"this is xiaoxie","quandaxie":"DONE","qukongge":" hha "}
return render_template("filter.html", dicts=my_dict) # 宏在模板中的使用宏类似于 Python 代码中的函数
@app.route("/hong_useage")
def hong_use():
item_list = ["python", "java", "c++", "c#", "django", "flask"]
return render_template("hong.html", comments=item_list) #把宏保存为html模板,然后在其他模板中导入使用
@app.route("/hone_template_useage")
def hone_template_use():
item_list = ["python", "java", "c++", "c#", "django", "flask"]
return render_template("test_macros_template.html", comments=item_list) #测试模板继承 base是母模板 son是继承base.html
@app.route("/son_use_father_template")
def son_use_father():
return render_template("son.html") @app.route("/test_bootstrap/<name>")
def get_bootstrap(name):
return render_template("test_bootstrap.html", name=name) @app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404 @app.route("/get_some_url")
def get_soome_url():
url = url_for("son_use_father", _external=True)
print(url)
return render_template("get_url_template.html",urls=url) @app.route("/get_datetime")
def get_datetime(): return render_template("test_datetime.html", current_time=datetime.utcnow()) ####################################table model start#################################################
class NameForm(Form):
name = StringField('What is your name?', validators=[DataRequired()])
submit = SubmitField('Submit') class Role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
users = db.relationship('User', backref='role')
def __repr__(self):
return '<Role %r>' % self.name class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, index=True)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
def __repr__(self):
return '<User %r>' % self.username #######################################table model end############################################## @app.route("/test_form",methods=["GET","POST"])
def use_form():
name = None
form = NameForm()
if form.validate_on_submit():
# # name = form.name.data
# session['name'] = form.name.data
# # form.name.data = ''
# return redirect(url_for('use_form')) old_name = session.get('name')
if old_name is not None and old_name != form.name.data:
flash('Looks like you have changed your name!')
session['name'] = form.name.data
return redirect(url_for('use_form'))
return render_template('form.html', form=form, name=session.get('name')) if __name__ == "__main__":
app.debug = True
# app.run(host="0.0.0.0", port=8080)
manager.run()

flask 学习app代码备份的更多相关文章

  1. Flask学习-Flask app启动过程

    因为0.1版本整体代码大概只有350行,比较简单.所以本篇文章会以Flask 0.1版本源码为基础进行剖析Flask应用的启动过程. Flask参考资料flask,官网有一个最简单app: from ...

  2. [ZHUAN]Flask学习记录之Flask-SQLAlchemy

    From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...

  3. 二.Flask 学习模板

    Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...

  4. Python Flask学习笔记之模板

    Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...

  5. Python Flask学习笔记之Hello World

    Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...

  6. python 全栈开发,Day142(flask标准目录结构, flask使用SQLAlchemy,flask离线脚本,flask多app应用,flask-script,flask-migrate,pipreqs)

    昨日内容回顾 1. 简述flask上下文管理 - threading.local - 偏函数 - 栈 2. 原生SQL和ORM有什么优缺点? 开发效率: ORM > 原生SQL 执行效率: 原生 ...

  7. Flask学习-Wsgiref库

    一.前言 前面在Flask学习-Flask基础之WSGI中提到了WerkZeug,我们知道,WerkZeug是一个支持WSGI协议的Server,其实还有很多其他支持WSGI协议的Server.htt ...

  8. Flask 学习篇二:学习Flask过程中的记录

    Flask学习笔记: GitHub上面的Flask实践项目 https://github.com/SilentCC/FlaskWeb 1.Application and Request Context ...

  9. Flask 学习(三)模板

    Flask 学习(三)模板 Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于 ...

随机推荐

  1. python:将字典转化为数据框

    my_dict = {,,} import pandas as pd pd.Series(my_dict) fuck i you dtype: int64 一个key只有一个value的字典如果直接转 ...

  2. INSTALL_FAILED_UID_CHANGED

    ADT试图安装console显示上面的提示.网上查的办法: 1. 删除/data/app/(filename) 文件夹下的apk包 2. 删除/system/app/(filename) 文件夹下的a ...

  3. CentOS环境 升级Python2.6.6至2.7.5

      1.查看当前Python版本 # python -V Python 2.6.6 # python -V Python 2.6.6 2.下载Python2.7.5源码 # wget http://p ...

  4. BZOJ_3729_Gty的游戏_博弈论+splay+dfs序

    BZOJ_3729_Gty的游戏_博弈论+splay+dfs序 Description 某一天gty在与他的妹子玩游戏. 妹子提出一个游戏,给定一棵有根树,每个节点有一些石子,每次可以将不多于L的石子 ...

  5. bzoj 2655 calc —— 拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2655 先设 f[i][j] 表示长度为 i 的序列,范围是 1~j 的答案: 则 f[i][ ...

  6. POJ2217(最长公共子串)

    Secretary Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 992   Accepted: 408 Descripti ...

  7. jquery : eval() 解析json的注意

    jquery eval解析JSON中的注意点介绍 来在:http://www.jb51.net/article/40842.htm 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: ...

  8. %02d %03d

    strTemp.Format("%02d",m_unEditPosition); %02d 输出两位整数,不足两位的前面加0,比如05,06…… %03d 输出三位整数,不足两位的 ...

  9. Linux日志分割脚本

    该脚本的功能是定时分割日志文件 #!/usr/bin/env bash #定时分割清理日志文件 #usage="Usage: logrotate (start|stop) file (lin ...

  10. Game of Peace

    Time Limit: 4000ms, Special Time Limit:10000ms, Memory Limit:65536KB Total submit users: 20, Accepte ...