flask下,实现简单博客3

flask下,实现简单博客2

所有视图(views.py完整代码):

 
# -*- coding: utf-8 -*-
"""
Flaskr
~~~~~~
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 flask import Flask , request , session , g , redirect , url_for , abort , \
render_template , flash , _app_ctx_stack
# 创建数据库
DATABASE = 'blog.db' DEBUG = True SECRET_KEY = 'development key' USERNAME = 'admin' PASSWORD = '123'
#初始化环境
# create our little application :)
app = Flask ( __name__ )
app . config . from_object ( __name__ )
app . config . from_envvar ( 'FLASKR_SETTINGS' , silent = True )
#初始化数据库
def init_db ():
"""Creates the database tables."""
with app . app_context ():
db = get_db ()
with app . open_resource ( 'schema.sql' ) as f :
db . cursor () . executescript ( f . read ())
db . commit ()
def get_db ():
"""Opens a new database connection if there is none yet for the
current application context.
"""
top = _app_ctx_stack . top
if not hasattr ( top , 'sqlite_db' ):
sqlite_db = sqlite3 . connect ( app . config [ 'DATABASE' ])
sqlite_db . row_factory = sqlite3 . Row
top . sqlite_db = sqlite_db
return top . sqlite_db
@app.teardown_appcontext
def close_db_connection ( exception ):
"""Closes the database again at the end of the request."""
top = _app_ctx_stack . top
if hasattr ( top , 'sqlite_db' ):
top . sqlite_db . close ()
@app.route ( '/' )
def show_entries ():
db = get_db ()
cur = db . execute ( 'select title, text from entries order by id desc' )
entries = 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 )
db = get_db ()
db . execute ( 'insert into entries (title, text) values (?, ?)' ,
[ request . form [ 'title' ], request . form [ 'text' ]])
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__' :
init_db ()
app . run ()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值