網站有當前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>
{% block main %}
首頁
{% endblock %}
{% block sub %}
<table>
/<table>
{% endblock %}
loginpage.html
{% from 'forms.html' import input %}
{% extends 'indexpage.html' %}
{% block title%}
登錄
{% endblock %}
{% block img %}
{% endblock %}
{% block main %}
登錄頁面
{% endblock %}
{% block sub %}
<table>
/<table>
{% endblock %}
register.html
{% from 'forms.html' import input%}
{% extends 'indexpage.html' %}
{% block title %}
註冊
{% endblock %}
{% block img %}
{% endblock %}
{% block main %}
註冊頁面
{% endblock %}
{% block sub %}
<table>
/<table>
{% endblock %}
static folder
bootstrap 3.3.7
jquery3.2.1
1.gif
2.gif
1.JPG
index.css
a.index :hover{
background-color:red;
color:blue;
}
img {
width: 100px;
height:50px;
}
.main{
text-align:center;
}
table.t1{
position:absolute;
margin:0 auto;
left:40%;
top:40%;
}
簡易版網站,功能稍顯不足,日後改善
閱讀更多 任性的90後boy 的文章