flask web模板二

栏目: Python · 发布时间: 5年前

内容简介:文件目录结构如下.├── app

通过多个蓝图将不同功能的视图函数放到不同的模块文件下

文件目录结构如下

.

├── app

│   ├── __init__.py # 初始化flask核心对象,导入视图函数文件,并注册视图函数到蓝图

│   ├── templates # 模板文件目录

│   │   └── login.html

│   └── views

│   ├── account.py # 创建和账号相关视图函数

│   ├── __init__.py # 定义蓝图,并导入views下的视图函数模块文件

│   ├── user.py # 创建和用户相关的视图函数

│   └── web.py # 创建大部分业务相关视图函数

├── Pipfile

├── run.py # 启动flask,加载配置文件

└── settings.py # 定义配置文件

在项目根目录下创建run.py、settings.py以及app目录,并且在app目录下创建__init__.py以及templates、views、static目录

run.py内容如下

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

from app import app
# app.config.from_object("settings.ProductionConfig")
app.config.from_object("settings.DevelopmentConfig")
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

settings.py内容如下

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


class Config(object):
    DEBUG = False
    TESTING = False
    DATABASE_URI = 'sqlite://:memory:'


class ProductionConfig(Config):
    DATABASE_URI = 'mysql://server:server@192.168.15.120/server'


class DevelopmentConfig(Config):
    DEBUG = True


class TestingConfig(Config):
    TESTING = True

app/__init__.py内容如下

from flask import Flask

app = Flask(__name__, template_folder='templates', static_folder='static', static_url_path='/static')
from .views.account import account
from .views.user import user
from .views.web import web

app.register_blueprint(account)
app.register_blueprint(user)
app.register_blueprint(web)

app.secret_key = "password"
app.debug = True

在app/views目录下创建__init__.py、account.py、user.py、web.py

__init__.py内容如下

# 定义蓝图

from flask import Blueprint

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

from app.views import web
from app.views import user
from app.views import account

web.py内容如下

from app.views import web


@web.route('/', methods=['GET', 'POST'])
def index():
    return 'index'

user.py内容如下

from app.views import user
from flask import session, redirect


# 让url前缀为 user的请求都要求登录
@user.before_request
def press_request(*args, **kwargs):
    user = session.get('user_info')
    if user:
        return None
    return redirect('/login/')


@user.route('/', methods=['GET', 'POST'])
def user_index():
    return 'user'

account.py内容如下

from app.views import account
from flask import request, render_template, redirect, session


@account.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前缀的请求做扩展
@account.before_request
def press_request(*args, **kwargs):
    print("来了")

在app/templates目录下创建login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>用户登录</h1>
        <form method="post">
            <input type="text" name="user">
            <input type="text" name="pwd">
            <input type="submit" value="登录">{{error}}
        </form>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

AI极简经济学

AI极简经济学

阿杰伊·阿格拉沃尔、乔舒亚·甘斯、阿维·戈德法布 / 闾佳 / 湖南科技出版社 / 2018-12-1 / 58.00

人工智能正在以不可阻挡的态势席卷全球。无论是iPhone的神经网络引擎、AlphaGo的围棋算法,还是无人驾驶、深度学习……毫无疑问,人工智能正在改写行业形态。如同此前个人电脑、互联网、大数据的风行一般,技术创新又一次极大地改变了我们的工作与生活。 那么,究竟应该如何看待人工智能?在《AI极简经济学》一书中,三位深耕人工智能和决策领域的经济学家给出了清晰的答案。他们以坚实的经济学理论剖析动态,把握......一起来看看 《AI极简经济学》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具