`
waveeee
  • 浏览: 50614 次
  • 来自: 上海
社区版块
存档分类
最新评论

flask 备忘

    博客分类:
  • Priv
 
阅读更多

 写道
# -*- coding: utf-8 -*-
"""
Flaskr  flaskr.py
~~~~~~

A microblog example application written as Flask tutorial with
Flask and sqlite3.

:copyright: (c) 2010 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from __future__ import with_statement
from sqlite3 import dbapi2 as sqlite3
from contextlib import closing
from flask import Flask, request, session, g, redirect, url_for, abort, \
render_template, flash

# configuration
DATABASE = '/tmp/flaskr.db'
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'

# create our little application :)
app = Flask(__name__)
app.config.from_object(__name__)
app.config.from_envvar('FLASKR_SETTINGS', silent=True)


def connect_db():
"""Returns a new connection to the database."""
return sqlite3.connect(app.config['DATABASE'])


def init_db():
"""Creates the database tables."""
with closing(connect_db()) as db:
with app.open_resource('schema.sql') as f:
db.cursor().executescript(f.read())
db.commit()


@app.before_request
def before_request():
"""Make sure we are connected to the database each request."""
g.db = connect_db()


@app.teardown_request
def teardown_request(exception):
"""Closes the database again at the end of the request."""
if hasattr(g, 'db'):
g.db.close()


@app.route('/')
def show_entries():
cur = g.db.execute('select title, text from entries order by id desc')
entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()]
return render_template('show_entries.html', entries=entries)


@app.route('/add', methods=['POST'])
def add_entry():
if not session.get('logged_in'):
abort(401)
g.db.execute('insert into entries (title, text) values (?, ?)',
[request.form['title'], request.form['text']])
g.db.commit()
flash('New entry was successfully posted')
return redirect(url_for('show_entries'))


@app.route('/login', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
if request.form['username'] != app.config['USERNAME']:
error = 'Invalid username'
elif request.form['password'] != app.config['PASSWORD']:
error = 'Invalid password'
else:
session['logged_in'] = True
flash('You were logged in')
return redirect(url_for('show_entries'))
return render_template('login.html', error=error)


@app.route('/logout')
def logout():
session.pop('logged_in', None)
flash('You were logged out')
return redirect(url_for('show_entries'))


if __name__ == '__main__':
app.run(host='0.0.0.0')
 
分享到:
评论

相关推荐

    教师上课提醒备忘软件

    一个有课程表的软件,可以自定义上课提醒时间,也可以当闹钟用,每天最多可以设9次闹钟,有备忘记事功能 ,flash air程序,安装使用时要连网下载air

    最新日历备忘录小程序部分文档.doc

    最新日历备忘录小程序部分文档.doc

    flash AS3读取外部JSON数据并给文本框赋值

    初次用到flash读取JSON,经过几天的研究,总算告一段落。现总结备忘,也供朋友们参考。 详文见: http://www.cnblogs.com/guo2001china/archive/2012/06/01/2530441.html

    ComicNote:基于 ActionScript 3 的动漫系列备忘录

    漫画笔记基于 ActionScript3 的动漫系列备忘录。作者鼠标特征动漫管理Eposide计数自动更新数据输入输出易于使用丑陋的用户界面开发打开 ComicNote.fla 并构建 swf 文件。 请注意,仅支持 Adob​​e Flash CS4+。 ...

    flex 安全沙箱问题备忘

    当a.com中的flash要访问b.com中的资源(如图片等)时,flex会提示安全沙箱错误!

    一步一步学习Revel Web开源框架

    Framework 而来, 我个人认为Revel是目前Go语言中比较不错的一个Web开发框架, 虽然它还有很多待完善的地方但还是很值得学习和借鉴滴, 我在这里记录一下偶的对它滴研究过程,以作备忘,也希望能和喜欢它的朋友们一起...

    DSM记事本 v1.0.33 for Android.zip

    -支持checklist(备忘录),可添加多个待办事项并进行优先级排序,让您的工作和生活变得井井有条; -可自定义记事本列表显示的排序方式及视图类型; -可设定提醒时间; -可设定登录密码,以及单条记事本查看密码...

    系统个性打造工具(本机信息,系统相关,QQ批量登录,定时设置,在线搜索)

    具有备忘录的功能 在线搜索 支持主板驱动搜索 支持显卡驱动搜索 支持声卡驱动搜索 支持百度网页搜索 支持百度音乐搜索 支持百度图片搜索 支持百度Mp3搜索 支持百度Flash搜索 支持Google网页搜索 支持Google图片...

    Q-Space 晴网个人博客文章系统源码

    4、视频 收藏自己喜欢的电影,电视剧,Flash短片。 5、软件 收藏常用或者特色的软件资源。 6、网络书签 收藏自己的网址,支持IE收藏夹导入/导出 。 7、记事本 记录日常琐事,备忘备查 。 8、通讯录 记录家人、好友...

    asxlsTolua工具和工程代码

    自己写的flashair 讲xls导出成lua table 的工。xls 配置为,第一行为描素,第2行为属性名,自己配表的描素备忘文字,可以设置为空,则不会导出该列。不支持07以后的xlsx。可以正常支持中文导出。工程代码和导出后的...

    比邻记事本(含演示数据库)

    记录生活的点滴,摘录美文,随时备忘,作笔记等,是你生活的好助手。 主要功能:仿Word界面,具有Word大部分功能,表格操作,gif图片,Flash动画显示,链接跳转,分组结点加密,附件上传下载,日历,截图,定时任务...

    C++加密源码

    (1)皮肤库的使用(2)播放flash(3)实现窗体透明控件不透明(4)备忘录功能的逻辑与算法(5)加密功能 该加密功能 自己创作,加密解密 只对于本程序识别, 在操作文件做标记,标记内容密码跟原文内容加密码不一样...

    Article-Submission:用Sinatra构建文章发布和管理系统

    锡那特拉(Sinatra)环境建设备忘录bundle init 宝石文件# frozen_string_literal: truesource ...-path vendor/bundle 创建app.rb get '/' do "hello world"end 创建config.ru requ

    Eschool校园网平台

    内容里可插入网页链接、邮件链接、引用、FLASH动画、图片、声音、视频等。 4、界面美观:用户使用方便、简洁、易懂; 5、数据安全性:采用大型数据库系统,系统管理员可以修改数据库登录密码和用户密码,确保...

    FAT16(FAT32)文件系统存储原理和详细过程

    自己保留做备忘! ******************* lhdzwkk4的温馨提示:下载资源后正确评价资源的方法********************************** 下载资源后评价 == 评语+ 评星 “☆☆☆☆☆ ” “发表评论”上面有个☆☆☆☆☆ 点...

    supermemo::student: SuperMemo 2 (SM2) 算法的 JavaScriptTypeScript 实现,用于基于间隔的重复抽认卡

    超级备忘录 (SM2) 算法的 JavaScript/TypeScript 实现,用于基于间隔的重复抽认卡。 如果您喜欢这个项目,请点击Star按钮 :star:解释 type SuperMemoItem = { interval : number ; repetition : number ; efactor : ...

    discuz 2.2Fsp1插件加强版

    找不到图片时友好提示 支持flash,iframe等代码 真正控制签名图片的高度 在簡訊里加入表情圖 在各版块滚动显示所有公告 在发贴文本输入框中显示背景图片 右侧滑动按钮 用户上传头象 (三...

    memodrop:时间表紧的人的快速学习过程。 使用闪存卡实现Leitner系统

    备忘录 时间表紧的人的快速学习过程。 在Python 3和Django中实现。 停止维护 尽管我很喜欢这个项目并与社区分享,但我还是决定不再为此付出更多的努力。 它一直是我旅途中可靠的伴侣,而且-谁知道-也许它也帮助了...

    memoet:玩测验以使用间隔重复法记住所有内容

    备忘录 玩测验以使用间隔重复法记住所有内容 本地设置 要启动Phoenix服务器: 使用mix deps.get安装依赖mix deps.get 使用mix ecto.setup创建和迁移数据库 在assets目录中使用npm i安装Node.js依赖项 使用mix phx....

Global site tag (gtag.js) - Google Analytics