【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 ...
随机推荐
- Lucas定理
Lucas' theorem In number theory, Lucas's theorem expresses the remainder of division of the binomial ...
- 原!!jar包 --可执行exe文件--安装包
这几天由于部门统计名单,都是一边报,一边统计,感觉麻烦,写了个小工具,做成安装包.其他不多说,网上都有,我就自己按照网上操作,碰到了一些问题,对这些问题说下. ----------废话少说------ ...
- contiki-进程
进程的结构 Contiki的进程由两部分组成:进程控制块和进程线程.进程控制块存储在内存中,它包含进程运行时的信息,比如:进程名.进程状态.指向进程线程的指针. 进程线程是存储在ROM中的一个代码块. ...
- Laravel 流程分析——应用程序初始化
在整体分析中,我们看到Laravel首先会进行一个app的初始化,代码如下: $app = require_once __DIR__.'/../bootstrap/app.php'; 我们具体看看ap ...
- HTML 图像<img>
定义和用法: img元素向网页中嵌入一副图像. 请注意:从技术上讲,<img>标签并不会在网页中插入图像,而是从网页上链接图像.<img>标签创建的是被引用图像的占位空间. 属 ...
- Objective-C( Foundation框架 一 常见的结构体)
常见的结构体 (NSPoint,CGPoint).(NSRange,CGRange).(NSSize,CGSize) 苹果官方推荐使用CG开头的结构体 NSRange是Foundation框架中常见的 ...
- C#获取参数getParameter
昨天遇到了这样一个问题,getParameter时,首次进入页面读取默认值时,本应该读取到“全部”这个字符. 然后在实际读取过程当中却不是这样,实际读取到的是 类的对象值 重新运行时能够读取到 “全 ...
- MVC发布问题(一直显示目录浏览)
写了一个MVC的Demo,发布之后一直显示目录浏览,始终无法展示网站. 步骤如下: 1.生成解决方案,发布应用程序 2.打开IIS,新建网站,选择发布程序的代码路径 3.设置应用程序池为4.0,集成 ...
- PDF 补丁丁 0.4.2.1218 测试版发布:新增拆分文档功能
新的测试版的“提取页面”功能增加了拆分文档的选项. 可按照指定的页码范围(用“:”分号分割).顶层书签或指定页数三种方式,将一个 PDF 文档拆分成多个文档. 此功能还支持多个文档批量操作. 欢迎各位 ...
- 14072202(带IK的Recoil)
[目标] 带IK的Recoil [思路] 1 继承于USkelControlLimb和UGameSkelCtrl_Recoil 2 效果对比 以这个骨骼为例 Recoil Limb 可见,Recoi ...