我用 Flask 撸了一个日料网站

Posted 编程派

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用 Flask 撸了一个日料网站相关的知识,希望对你有一定的参考价值。

来源:不爱贞子爱爽子

来源:http://www.cnblogs.com/shuangzikun/p/taotaopythonflask_webConfig.html

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

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

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

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

我用 Flask 撸了一个日料网站

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

主目录:

我用 Flask 撸了一个日料网站

app:编写主要程序的目录

migrations:数据库相关目录

tests:测试目录

venu:扩展库或其他库环境

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

manage.py:网站运行文件

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

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

config.py

 
   
   
 
  1. # -*- coding: utf-8 -*-

  2. import os

  3. basedir = os.path.abspath(os.path.dirname(__file__))

  4. # 基类

  5. class Config:

  6.    SECRET_KEY = 'hard to guess string'

  7.    SQLALCHEMY_COMMIT_ON_TEARDOWN = True

  8.    FLASKY_MAIL_SUBJECT_PREFIX = '[Flask]'

  9.    FLASKY_MAIL_SENDER = 'Flask Admin'

  10.    FLASKY_ADMIN = 'dimples'

  11.    @staticmethod

  12.    def init_app(app):

  13.        pass

  14. # 开发环境

  15. class DevelopmentConfig(Config):

  16.    DEBUG = True

  17.    SQLALCHEMY_DATABASE_URI = 'mysql://root@localhost:3306/f_luntan?charset=utf8'

  18. # 测试环境

  19. class TestingConfig(Config):

  20.    TESTING = True

  21.    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')

  22. # 生产环境

  23. class ProductionConfig(Config):

  24.    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')

  25. # 设置一个config 字典中,注册了不同的配置环境

  26. config = {

  27.    'development': DevelopmentConfig,

  28.    'testing': TestingConfig,

  29.    'production': ProductionConfig,

  30.    'default': DevelopmentConfig

  31.    }

manage.py

 
   
   
 
  1. # -*- coding: utf-8 -*-

  2. from app import create_app, db

  3. from flask_script import Manager

  4. from flask_migrate import Migrate, MigrateCommand

  5. app = create_app('default')

  6. manager = Manager(app)

  7. migrate = Migrate(app, db)

  8. manager.add_command('db', MigrateCommand)

  9. if __name__ == '__main__':

  10.    manager.run()

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

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

进入app目录 cd app

我用 Flask 撸了一个日料网站

该目录有点类似mvc模式

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

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

static:静态文件js,img,css

templates:模板文件

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

init.py

 
   
   
 
  1. # -*- coding: utf-8 -*-

  2. from flask import Flask

  3. from flask_bootstrap import Bootstrap

  4. from flask_mail import Mail

  5. from flask_sqlalchemy import SQLAlchemy

  6. from config import config

  7. bootstrap = Bootstrap()

  8. mail = Mail()

  9. db = SQLAlchemy()

  10. # 工厂函数

  11. def create_app(config_name):

  12.    app = Flask(__name__)

  13.    app.config.from_object(config[config_name])

  14.    config[config_name].init_app(app)

  15.    bootstrap.init_app(app)

  16.    mail.init_app(app)

  17.    db.init_app(app)

  18.    #注册蓝本

  19.    from .main import main as main_blueprint

  20.    app.register_blueprint(main_blueprint)

  21.    return app

很多需要安装的库安上去

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

 
   
   
 
  1. from app import db

  2. class User(db.Model):

  3.    __tablename__ = 'users'

  4.    id = db.Column(db.Integer, primary_key=True)

  5.    UserCode = db.Column(db.String(64), unique=True, index=True)

  6.    Password = db.Column(db.String(128))

  7.    def __init__(self, UserCode=None, Password=None):

  8.        self.UserCode = UserCode

  9.        self.Password = Password

  10.    def __repr__(self):

  11.        return '' % self.UserName

建了个测试表

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

进入main文件夹 cd main

我用 Flask 撸了一个日料网站

init.py

 
   
   
 
  1. # -*- coding: utf-8 -*-

  2. from flask import Blueprint

  3. main = Blueprint('main', __name__)

  4. from . import views, errors

errors.py

 
   
   
 
  1. # -*- coding: utf-8 -*-

  2. from flask import render_template

  3. from . import main

  4. @main.app_errorhandler(404)

  5. def page_not_found(e):

  6.    return render_template('404.html'), 404

  7. @main.app_errorhandler(500)

  8. def internal_server_error(e):

  9.    return render_template('500.html'), 500

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

form.py null 还没有添加内容

views.py 视图文件

 
   
   
 
  1. # -*- coding: utf-8 -*-

  2. from flask import render_template, session, redirect, url_for, current_app

  3. from .. import db

  4. from ..models import User

  5. from . import main

  6. @main.route('/', methods=['GET', 'POST'])

  7. def index():

  8.    return render_template('index.html')

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

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

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

我用 Flask 撸了一个日料网站

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

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

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

如图,全是html

我用 Flask 撸了一个日料网站

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

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

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

我用 Flask 撸了一个日料网站

我用 Flask 撸了一个日料网站

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

把所有库都完毕后再运行

我用 Flask 撸了一个日料网站

打开127.0.0.1:5000

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


题图:pexels,CC0 授权。

点击阅读原文,查看更多 Python 教程和资源。

以上是关于我用 Flask 撸了一个日料网站的主要内容,如果未能解决你的问题,请参考以下文章

用Flask写一个图书作者管理网站(附完整代码)

使用Flask SQLAlchemy从SQLite切换到MySQL

Leader 让我做 CMS 帮助中心的技术选型,我撸了 VuePress 和 GitBook,然后选择...

python Flask - 数据库片段

12_关于flask中的宏

从0开始使用python flask编写博客网站