【Flask】Flask快速玩框架
快速玩Flask框架,为微博做些准备
from flask importFlask, render_template, session, redirect, url_for, flash
from flask_bootstrap importBootstrap
from flask_moment importMoment
from datetime import datetime
from flask_wtf importForm
from wtforms importStringField,SubmitField
from wtforms.validators importRequired
from flask_sqlalchemy importSQLAlchemy
from flask_script importManager
import os
basedir = os.path.abspath(os.path.dirname(__file__))
app =Flask(__name__)
#wtf表单验证
app.config['SECRET_KEY']='hard to guess string'
#数据库URL
app.config['SQLALCHEMY_DATABASE_URI']= \
'sqlite:///'+ os.path.join(basedir,'data.sqlite')
#每次请求结束后自动提交数据变动
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
bootstrap =Bootstrap(app)
moment =Moment(app)
db =SQLAlchemy(app)
manager =Manager(app)
#wtf表单类
classNameForm(Form):
name =StringField('What is your name?', validators=[Required()])
submit =SubmitField('Submit')
#数据库中的table类
classRole(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', lazy='dynamic')
def __repr__(self):
return'<Role %r>'% self.name
classUser(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
#主页
@app.route('/', methods=['GET','POST'])
def index():
form =NameForm()
if form.validate_on_submit():
user =User.query.filter_by(username=form.name.data).first()
if user isNone:
user =User(username=form.name.data)
db.session.add(user)
session['known']=False
else:
session['known']=True
session['name']= form.name.data
form.name.data =''
return redirect(url_for('index'))
return render_template('user.html', form=form, name=session.get('name'), known=session.get('known',False),
current_time=datetime.utcnow())
#404页
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'),404
#500页
@app.errorhandler(500)
def internal_server_error(e):
return render_template('500.html'),500
#manager.run() 用于是服务器在命令行运行
if __name__ =='__main__':
app.run(debug=True)
# manager.run()
<!-- 基于bootstrap/base.html的基模板 默认有导航栏 page——content可重写-->
{% extends "bootstrap/base.html" %}
<!-- 导入moment.js -->
{% block scripts %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}
{% block title %}Flasky{% endblock %}
{% block head %}
{{ super() }}
<linkrel="shortcut icon"href="{{ url_for('static', filename = 'favicon.ico') }}"
type="image/x-icon">
<linkrel="icon"href="{{ url_for('static', filename = 'favicon.ico') }}"
type="image/x-icon">
{% endblock %}
{% block navbar %}
<divclass="navbar navbar-inverse"role="navigation">
<divclass="container">
<divclass="navbar-header">
<buttontype="button"class="navbar-toggle"
data-toggle="collapse"data-target=".navbar-collapse">
<spanclass="sr-only">Toggle navigation</span>
<spanclass="icon-bar"></span>
<spanclass="icon-bar"></span>
<spanclass="icon-bar"></span>
</button>
<aclass="navbar-brand"href="/">Flasky</a>
</div>
<divclass="navbar-collapse collapse">
<ulclass="nav navbar-nav">
<li><ahref="/">Home</a></li>
</ul>
</div>
</div>
</div>
{% endblock %}
{% block content %}
<!-- 弹出警告信息-->
<divclass="container">
{% for message in get_flashed_messages() %}
<divclass="alert alert-warning">
<buttontype="button"class="close"data-dismiss="alert">×</button>
{{ message }}
</div>
{% endfor %}
{% block page_content %}{% endblock %}
</div>
{% endblock %}
<!DOCTYPE html>
{% extends "base.html" %}
{% block title %}Flasky - Page Not Found{% endblock %}
{% block page_content %}
<divclass="page-header">
<h1>Not Found</h1>
</div>
{% endblock %}
【Flask】Flask快速玩框架的更多相关文章
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- 初识Flask、快速启动
目录 一.初识Flask 1.1 什么是flask? 1.2 为什么要有flask? 二.Flask快速启动 一.初识Flask 1.1 什么是flask? Flask 本是作者 Armin Rona ...
- python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示
python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...
- 仿flask写的web框架
某大佬仿flask写的web框架 web_frame.py from werkzeug.local import LocalStack, LocalProxy def get_request_cont ...
- Flask 安装 快速入门
$ pip install flask Flask自带的Server在端口5000上监听: ython app.py flask通过request.form['name']来获取表单的内容. 外部可见 ...
- Inside Flask - Flask 简介
Inside Flask - Flask 简介 前言 Flask 的设计目标是实现一个 wsgi 的微框架,其核心代码保持简单和可扩展性,很容易学习.对于有一定经验初学者而言,跟着例子和一些书的代码来 ...
- Inside Flask - flask.__init__.py 和核心组件
Inside Flask - flask.__init__.py 和核心组件 简单的示例 首先看看一个简单的示例.使用 Flask ,通常是从 flask 模块导入 Flask . request 等 ...
- 快速玩转Apple Pay开发
快速玩转Apple Pay开发 更新时间:2016年02月20日09时25分 来源:传智播客 Apple Pay 2016年2月18日上午,苹果公司宣布,与中国银联达成合作,正式在中国大陆上线Appl ...
- day92:flask:flask简介&基本运行&路由&HTTP请求和响应
目录 1.Flask简介 2.关于使用flask之前的准备 3.flask的基本运行 4.flask加载配置 5.传递路由参数(没有限定类型) 6.传递路由参数(通过路由转换器限定路由参数的类型) 7 ...
随机推荐
- linux 知识汇总
1 ) linux下文件系统类型的学习 2 )深入理解linux i节点(inode) 3 )RAID系列
- 常用webservice接口
商业和贸易: 1.股票行情数据 WEB 服务(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebSe ...
- c语言->和 .
->和 . 都是用于访问结构数据的符号. struct point { int x; int y; }; . 符号是在表达式中引用某个特定结构中的成员: 结构名.成员 例如: struct po ...
- checkbox将选中的数据提交到后台
在项目中有些地方需要批量添加的数据,在这里使用到checkbox比较方便一些. 例如:我需要将多个包添加到同一个地区的 主要的前端代码: 这个是用来放checkbox的. <div id=&qu ...
- features block
很轻松就能把一个新建的block导出到一个module包里.
- The import javax.servlet.http.HttpServletRequest cannot be resolved
Error: The import javax.servlet cannot be resolved The import javax.servlet.http.HttpServletRequest ...
- Python爬虫:一些常用的爬虫技巧总结
爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情. 1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com&qu ...
- Linux 下 git连接github的使用
1.安装git sudo apt-get install git 2.创建github帐号 3.Linux创建SSH密钥: ssh-keygen //一直默认 4.将公钥加入到Github账户信息A ...
- hive踩过的小坑
上周使用hive做一些操作,几个小问题纠结很久.特此记录下: hive概念 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以 ...
- css实现自适应宽度布局
1.实现左侧宽度固定,右侧全屏自适应. body{margin:0;padding:0} .wrap{ width:100%; float:left} .content{ height:300px;b ...