web服务器运维笔记,flask web模板一

单蓝图多视图文件模板

文件目录结构如下

.

├── app

│   ├── __init__.py # 初始化flask核心对象

│   └── web

│   ├── account.py # 和账号相关视图函数定义文件

│   ├── blueprint.py # 蓝图定义文件

│   ├── __init__.py # 将视图函数文件导入,保证视图函数可以注册到蓝图

│   └── user.py # 和用户相关视图函数定义文件

├── config.py # 项目配置文件

├── readme.txt

└── run.py # 项目启动文件

在项目根目录下创建run.py、config.py以及app目录,并且在app目录下创建__init__.py以及web、templates、static三个目录。

run.py内容如下

# -*- coding:utf-8 -*-

# 项目入口文件,负责完成web服务器的启动、配置文件的加载和读取、初始化flask核心对象(或将初始化任务放入app/__init__.py)

# 不将业务相关的代码放在这里

# 从app这个包引入自定义的创建app对象的函数

from app import create_app

app = create_app()

if __name__ == '__main__':

app.run(host='0.0.0.0', port=80, debug=app.config['DEBUG'])

config.py内容如下

# -*- coding:utf-8 -*-

# 定义项目配置文件

DEBUG = True

app/__init__.py内容如下

# -*- coding:utf-8 -*-

# 初始化flask核心对象

from flask import Flask

# 定义一个函数用来创建app核心对象

def create_app():

app = Flask(__name__)

app.config.from_object('config')

# 调用注册蓝图

register_blueprint(app)

return app

# 创建注册蓝图的方法

def register_blueprint(app):

# 导入蓝图对象

from app.web.blueprint import web

app.register_blueprint(web)

在app/web目录下创建__init__.py、blueprint.py、user.py、account.py三个文件

__init__.py内容如下

# -*- coding:utf-8 -*-

# 将视图函数的文件中的视图函数导入

# 因为在web/blueprint.py中只是定义蓝图, 但并没有将web目录下的视图函数文件中定义的视图函数导入

# 视图函数没有导入web/blueprint.py那么,函数注册到蓝图也会失败

# 由于book.py和user.py下的视图函数是没有被导入的因此需要在这里导入,否则还是会提示404视图文件没注册的问题

from app.web import server

from app.web import user

from app.web import account

blueprint.py内容如下

# -*- coding:utf-8 -*-

# 定义蓝图

from flask import Blueprint

# 这里定义一个叫web的通用名称的蓝图,在web/__init__.py中将 web目录下的多个视图函数的文件再注册到web这个蓝图下

web = Blueprint('web', __name__)

# 将web目录下视图函数文件中的视图函数导入的工作交给web/__init__.py

user.py内容如下

# -*- coding:utf-8 -*-

# 视图函数定义文件,定义和用户相关的视图函数

from .blueprint import web

from flask import session, redirect

# @web.route('/user/')

# def user():

# pass

# 让url前缀为 user的请求都要求登录

# @web.before_request

# def press_request(*args, **kwargs):

# user = session.get('user_info')

# if user:

# return None

# return redirect('/login/')

@web.route('/user/', methods=['GET', 'POST'])

def user():

return 'user'

account.py内容如下

# -*- coding:utf-8 -*-

# 视图函数定义文件,和账号相关的视图函数

from .blueprint import web

from flask import request, render_template, redirect, session

@web.route('/register/')

def register():

pass

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

def login():

if request.method == "GET":

return render_template('login.html')

else:

user = request.form.get("user")

pwd = request.form.get("pwd")

if user == 'zdz' and pwd == '123':

session['user_info'] = user

# return redirect('http://www.zhengdazhi.com')

return redirect('/user/')

return render_template('login.html', error='用户名或密码错误')

# 为account这个蓝图下的url前缀的请求做扩展

@web.before_request

def press_request(*args, **kwargs):

print("来了")

在app/templates目录下创建login.html,内容如下

Title

用户登录

{{error}}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值