app
from flask import Flask
from flask_script import Manager
from App. ext import db
from App. views import bp
app = Flask( __name__)
app. config. from_pyfile( "settings.py" )
db. init_app( app)
manager = Manager( app)
app. register_blueprint( bp)
if __name__ == '__main__' :
manager. run( )
App.ext
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy( )
settings
DEBUG = True
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:19970223@localhost:3306/sess"
SQLALCHEMY_TRACK_MODIFICATIONS = False
App.views
from datetime import timedelta, datetime
from flask import Blueprint, request, make_response, render_template, redirect
from App. models import User
bp = Blueprint( "bp" , __name__)
@bp. route( "/login/" , methods= [ 'GET' , 'POST' ] )
def login ( ) :
if request. method == "POST" :
username = request. form. get( 'username' )
password = request. form. get( 'password' )
print ( username, password)
user = User. query. filter ( User. username== username, User. password== password) . first( )
print ( user)
if user:
response = redirect( "/" )
response. set_cookie( "username" , username, max_age= 3600 * 24 )
dest = datetime. now( ) + timedelta( days= 3 )
response. set_cookie( "username" , username, expires= dest)
return response
else :
return redirect( "/login/" )
return render_template( "login.html" )
@bp. route( "/" , methods= [ 'GET' , 'POST' ] )
def index ( ) :
username = request. cookies. get( 'username' )
if username:
return "你是合法用户"
else :
return "你是非法用户,请先登录"
@bp. route( "/logout/" )
def logout ( ) :
response = make_response( "退出登录" )
response. delete_cookie( 'username' )
return response
@bp. route( "/res/" )
def handle_response ( ) :
with open ( "static/1.jpeg" , 'rb' ) as fp:
content = fp. read( )
res = make_response( content)
res. headers[ 'Content-Type' ] = "image/jpeg"
res = make_response( "<h2>Hello world</h2>" )
res. headers[ 'hello' ] = "world"
print ( res. __dict__)
return res
return "hello" , 200
App.models
from App. ext import db
class User ( db. Model) :
__tablename__ = 'user'
uid = db. Column( db. Integer, primary_key= True )
username = db. Column( db. String( 30 ) , nullable= False )
password = db. Column( db. String( 128 ) , nullable= False )
gender = db. Column( db. Integer)
login.html
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< title> 登录</ title>
</ head>
< body>
< form action = " {{ url_for(' bp.login' ) }}" method = " post" >
用户名:< input type = " text" name = " username" > < br>
密码: < input type = " password" name = " password" > < br>
< input type = " submit" >
</ form>
</ body>
</ html>