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 ()

 

你可能感兴趣的:(flask,python)