擦边网,十堰个人房屋出租,ygzwto
完善环境配置,添加 异常请求 处理
首先,在 todolist\app\templates\errors
目录下创建一个 400.html 文件,示例代码如下所示:
{% extends 'base.html' %} {% block content %} <div class="text-center animated fadeindown"> <h1>400</h1> <h3> 错误请求!! !</h3> <div> <a href="{{ url_for('index') }}">返回首页</a> </div> </div> {% endblock %}
在 todolist\app\templates\errors
目录下创建一个 404.html 文件,示例代码如下所示:
{% extends 'base.html' %} {% block content %} <div class="text-center animated fadeindown"> <h1>404</h1> <h3> 页面未能够找到!! !</h3> <div> 抱歉,页面好像去火星啦! </div> </div> {% endblock %}
在 todolist\app\templates\errors
目录下创建一个 500.html 文件,示例代码如下所示:
{% extends 'base.html' %} {% block content %} <div class="text-center animated fadeindown"> <h1>500</h1> <h3> 内部异常!! !</h3> <div> <a href="{{ url_for('index') }}">返回首页</a> </div> </div> {% endblock %}
接着,在 todolist\app
目录下创建 errors.py 文件,,注册 400、 404 、500 路由处理函数,示例代码如下所示:
from flask import render_template from app import app @app.errorhandler(400) def bad_request(e): return render_template('errors/400.html'), 400 @app.errorhandler(404) def page_not_found(e): return render_template('errors/404.html'), 404 @app.errorhandler(500) def internal_server_error(e): return render_template('errors/500.html'), 500
在 todolist\app
目录下创建 commands.py 文件,示例代码如下所示:
import click from app import app, db from app.models import user, thing @app.cli.command() @click.option('--drop', is_flag=true, help='create after drop.') def initdb(drop): if drop: db.drop_all() db.create_all() print("initialized database.") @app.cli.command() @click.option('--username', prompt=true, help='the username used to login.') @click.option('--email', prompt=true, help='the email used to identity.') @click.option('--password', prompt=true, hide_input=true, confirmation_prompt=true, help='the password used to login.') def admin(username, email, password): db.create_all() user = user.query.first() if user: print("updating user...") user.name = username user.email = email user.generate_password_hash(password) else: print("creating user...") user = user(name="hippiezhou") user.email = email user.generate_password_hash(password) db.session.add(user) db.session.commit() print('done.')
此时,可以将 vs code 的终端却换至该项目根目录下,可执行上面我们自定义的相关目录,如下图所示:
使用前需要先进入到 app 中,具体可参考 下面的
todolist\app\__init__.py
代码。
首先,修改 todolist\config.py
文件,示例代码如下所示:
import os basedir = os.path.abspath(os.path.dirname(__file__)) class config(object): sqlalchemy_track_modifications = false secret_key = "you will never known it." class develpmentconfig(config): debug = true sqlalchemy_database_uri = os.environ.get( 'dev_database_url') or 'sqlite:///' + os.path.join(basedir, 'todo.sqlite') class productionconfig(config): debug = false sqlalchemy_database_uri = os.environ.get( 'sqlalchemy_database_uri') or 'mysql+pymysql://root:mysql@127.0.0.1:3306/todo' config = { 'development': develpmentconfig, 'production': productionconfig }
接着,修改 todolist\app\__init__.py
文件,示例代码如下所示:
from flask import flask from flask_bootstrap import bootstrap from flask_sqlalchemy import sqlalchemy from flask_login import loginmanager from config import config app = flask(__name__) app.config.from_object(config['development']) bootstrap = bootstrap(app) db = sqlalchemy(app) login_manager = loginmanager(app) login_manager.login_view = 'login' login_manager.login_message = '你必须登陆后才能访问该页面' login_manager.login_message_category = "info" @login_manager.user_loader def load_user(user_id): from app.models import user user = user.query.get(int(user_id)) return user @app.context_processor def inject_user(): from app.models import user user = user.query.first() return dict(user=user) from app import views, errors,commands
最后,修改 todolist\manage.py
文件,示例代码如下所示:
from app import app if __name__ == "__main__": app.run(debug=true, host='0.0.0.0', port=5000)
自此,我们的项目结构和代码已经进一步完善了,完整项目结构如下图所示:
最后,我们可以在 shell 窗口中执行 flask run 命令即可将我们的网站运行起来。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论