02.26 自己寫的flask 網站

網站有當前Python文件的目錄和templates 以及static 兩個子目錄

local floder

bluetu.py

from flask import Blueprint,make_response,redirect,url_for

from flask import render_template,request,flash,g,session

from sqlalchemy import and_,or_

from ext import db

from models import Article

blue=Blueprint('main',__name__)

@blue.before_app_first_request

def begin():

db.drop_all()

db.create_all()

@blue.app_context_processor

def admin_email():

email='[email protected]'

return dict(email='[email protected]')

@blue.route('/')

def gf():

return render_template('indexpage.html')

@blue.route('/login',methods=['GET','POST'])

def login():

if request.method=='POST':

use=request.form.get('user')

password=request.form.get('pa')

if Article.query.filter(and_(Article.title==use,Article.content==password)).first():

if 'user' in session:

if request.cookies:

return render_template('user.html',username=session.get('user'),cookie=redirect(url_for('main.getcookie')))

else:

return redirect(url_for('main.delcookie'))

else:

session.clear()

else:

flash('登錄失誤')

return render_template('loginpage.html')

@blue.route('/register',methods=['GET','POST'])

def register():

if request.method=='POST':

use='user' in request.form and request.form.get('user')

password='pa' in request.form and request.form.get('pa')

password1='pa1' in request.form and request.form.get('pa1')

session['user']=use

session['password']=password

if not Article.query.filter(Article.title==use).first():

if password!=password1:

flash('密碼不一致')

else:

art=Article(title=use,content=password)

db.session.add(art)

db.session.commit()

return redirect(url_for('main.login'))

db.session.close()

else:

return '重複註冊','302 Warning',{'notice':'fuck','Server':'My server'}

return redirect(url_for('main.setcookie'))

return render_template('register.html')

@blue.route('/setcookie')

def setcookie():

rep=make_response(render_template('register.html'))

rep.set_cookie('user','fsd',max_age=4)

rep.set_cookie('password','fasdf',max_age=4)

rep.headers['X-Something']='HW ZJ'

rep.headers['Server']='MY first server'

return rep

@blue.route('/getcookie')

def getcookie():

name='用戶名:'+request.cookies.get('user')+'密碼:'+request.cookies.get('password')

return name

@blue.route('/delcookie')

def delcookie():

rep=make_response()

rep.delete_cookie('user')

rep.delete_cookie('password')

return rep


config.py

host='127.0.0.1'

user='root'

password='hwzj'

port='3306'

database='people'

db_url='mysql://{}:{}@{}:{}/{}?charset=utf8'.format(user,password,host,port,database)

SQLALCHEMY_DATABASE_URI=db_url

SQLALCHEMY_COMMIT_ON_TEARDOWN=True

SQLALCHEMY_TRACK_MODIFICATIONS= False


ext.py

from flask_sqlalchemy import SQLAlchemy

db=SQLAlchemy()


manager.py

from run import app

from ext import db

from flask_script import Manager

from flask_migrate import Migrate,MigrateCommand

from models import Article

manager=Manager(app)

#db init ---db >migrate-->db upgrate

#初始化

migrate=Migrate(app,db)

#命令行操作

#python manager.py db init 初始化

#python manager.py db migrate 生成遷移文件 只要模型更改就運行這個命令

#python manager.py db upgrade將遷移文件映射到數據庫,migrate後必須運行它

manager.add_command('db',MigrateCommand)

@manager.command

def runserver():

print('server run......')

if __name__=='__main__':

manager.run()


models.py

from ext import db

class Article(db.Model):

__tablename__='article'

# __table_args__={'extend_existing':True}

id=db.Column(db.Integer,primary_key=True,autoincrement=True)

title=db.Column(db.String(100),nullable=False)

content=db.Column(db.String(100),nullable=False)


run.py

from ext import db

import os

from bluetu import blue

from flask import Flask

import pymysql as p

import config

app=Flask(__name__)

db.init_app(app)

p.install_as_MySQLdb()

app.config['SECRET_KEY']=os.urandom(50)

app.config.from_object(config)

app.register_blueprint(blue)

#with app.app_context(): #模型映射需刪除原先表再添加字段,麻煩

# db.create_all()

if __name__=='__main__':

app.run()


templates folder

forms.html

{% macro input(type='text',placeholder='請輸入用戶名',value='',name='') %}

{% endmacro %}


user.html

<title>Document/<title>


{{username}} 歡迎登陸

郵箱:

cookie:{{cookie}}


indexpage.html

<link>

<link>

<title>{% block title %}首頁{% endblock %}-黃偉/<title>

相關文章: