• flask-日料网站搭建-web目录搭建


    引言:想使用python的flask框架搭建一个日料网站,主要包含web架构,静态页面,后台系统,交互。

    本节知识:搭建web目录,目前正在copy网站。

    python环境:python2.7,flask,以及flask相关的库(没有列完,如果运行manage.py时提示未安装的库安装就ok了。)

    先来看看大致构成,如下图:

    然后按照如图新建一个目录,我一个个截图方便大家看。

    主目录:

    app:编写主要程序的目录

    migrations:数据库相关目录

    tests:测试目录

    venu:扩展库或其他库环境

    config.py:配置文件(重要)

    manage.py:网站运行文件

    requirements.txt:依赖库清单(这个好像自动生成)

    贴上该目录两个脚本的代码:

    config.py 

    # -*- coding: utf-8 -*-
    import os
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    
    # 基类
    class Config:
        SECRET_KEY = 'hard to guess string'
        SQLALCHEMY_COMMIT_ON_TEARDOWN = True
        FLASKY_MAIL_SUBJECT_PREFIX = '[Flask]'
        FLASKY_MAIL_SENDER = 'Flask Admin'
        FLASKY_ADMIN = 'dimples'
        @staticmethod
        def init_app(app):
            pass
    
    # 开发环境
    class DevelopmentConfig(Config):
        DEBUG = True
        SQLALCHEMY_DATABASE_URI = 'mysql://root@localhost:3306/f_luntan?charset=utf8'
    # 测试环境
    class TestingConfig(Config):
        TESTING = True
        SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
    
    # 生产环境
    class ProductionConfig(Config):
        SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
    
    # 设置一个config 字典中,注册了不同的配置环境
    config = {
        'development': DevelopmentConfig,
        'testing': TestingConfig,
        'production': ProductionConfig,
        'default': DevelopmentConfig
        }

    manage.py

    # -*- coding: utf-8 -*-
    from app import create_app, db
    from flask_script import Manager
    from flask_migrate import Migrate, MigrateCommand
    
    app = create_app('default')
    manager = Manager(app)
    migrate = Migrate(app, db)
    
    manager.add_command('db', MigrateCommand)
    
    if __name__ == '__main__':
        manager.run()

    --------------这是分割线--------------

    其它目录暂时都可以放在一边

    进入app目录 cd  app

    该目录有点类似mvc模式

    main:视图文件,错误导向,表单文件等

    models:模型文件跟数据库挂钩(下面的models.py也是模型文件。可以放在外面,也可以放在这个文件夹里面看着标准些,位置不同只是导入的路径不一样)

    static:静态文件js,img,css

    templates:模板文件

    然后接下来打开剩余的2个py文件

    __init__.py

    # -*- coding: utf-8 -*-
    from flask import Flask
    from flask_bootstrap import Bootstrap
    from flask_mail import Mail
    from flask_sqlalchemy import SQLAlchemy
    from config import config
    
    bootstrap = Bootstrap()
    mail = Mail()
    db = SQLAlchemy()
    
    # 工厂函数
    def create_app(config_name):
        app = Flask(__name__)
        app.config.from_object(config[config_name])
        config[config_name].init_app(app)
    
        bootstrap.init_app(app)
        mail.init_app(app)
        db.init_app(app)
    
        #注册蓝本
        from .main import main as main_blueprint
        app.register_blueprint(main_blueprint)
    
        return app

    很多需要安装的库安上去

    models.py 模型文件,我没放在models文件夹里面,也可以放在里面,改变下导入的路径即可

    from app import db
    
    class User(db.Model):
        __tablename__ = 'users'
    
        id = db.Column(db.Integer, primary_key=True)
        UserCode = db.Column(db.String(64), unique=True, index=True)
        Password = db.Column(db.String(128))
    
        def __init__(self, UserCode=None, Password=None):
            self.UserCode = UserCode
            self.Password = Password
    
        def __repr__(self):
            return '<User %r>' % self.UserName

    建了个测试表

    ------------------------这是分割线----------------------

    进入main文件夹 cd main 

    __init__.py    

    # -*- coding: utf-8 -*-
    from flask import Blueprint
    main = Blueprint('main', __name__)
    from . import views, errors

    errors.py

    # -*- coding: utf-8 -*-
    from flask import render_template
    from . import main
    
    @main.app_errorhandler(404)
    def page_not_found(e):
        return render_template('404.html'), 404
    
    @main.app_errorhandler(500)
    def internal_server_error(e):
        return render_template('500.html'), 500

    设置错误配置,引入的文件是templates文件夹的404.html

    form.py   null   还没有添加内容

    views.py  视图文件

    # -*- coding: utf-8 -*-
    from flask import render_template, session, redirect, url_for, current_app
    from .. import db
    from ..models import User
    from . import main
    
    @main.route('/', methods=['GET', 'POST'])
    def index():
        return render_template('index.html')

    新建了一个index路由,模板为视图文件的index.html,如果刚刚的models.py放在models文件夹里面,from ..models import User 就需要修改,你懂得。

    ----------------------这是分割线-------------

    退出main文件 cd .. 进入static文件  cd static

     如图,这个就不要解释了,做网站如果对这些不了解就很尴尬了。

    ----------------------这是分割线-------------

    退出static文件 cd .. 进入templates文件  cd templates

    如图,全是html

     ---------------------------------这就是大致目录-------------------------------

    --------开始测试可不可以运行,这样才能开始搞啊

    ---------cmd执行下    进入manage.py  目录  运行  python manage.py runserver

    看吧很多库没安装好,很伤啊,pip下。

    把所有库都完毕后再运行

    打开127.0.0.1:5000 

     

    有点乱了,html问题,总之测试ok了。。。我也要开始搞了,先把静态页面搞定,下次继续说相关的功能。

  • 相关阅读:
    c++标准库cstring文件
    c++标准库string文件
    c++标准库cmath文件
    micro:bit用蜂鸣器制作计时器
    【Python入门自学笔记专辑】——PythonUnicode字符
    eclips安装教程
    题目(18)答案
    Console.Write格式化输出
    图像传输有用到,图像与数据流相互转换
    datalist、repearter、gridview显示行号的三种方法 或者是获取datalist行id
  • 原文地址:https://www.cnblogs.com/shuangzikun/p/taotao_python_flask_webConfig.html
走看看 - 开发者的网上家园