zoukankan      html  css  js  c++  java
  • Flask入门之结构重组(瘦身)-第13讲笔记

    1. pip list

    Flask    0.10.1
    Flask-Bootstrap    3.3.5.6
    Flask-SQLAlchemy    2
    Flask-Script    2.0.5
    Flask-WTF    0.12
    flask-nav    0.4
    Jinja2    2.7.3
    Markdown    2.6.2
    MarkupSafe    0.23
    SQLAlchemy    1.0.8
    WTForms    2.0.2
    Werkzeug    0.10.4
    dominate    2.1.12
    itsdangerous    0.24
    visitor    0.1.2

    2. 布局后的文件结构(怎么生成的,cmd进入目录:C:UsersAdministratorPycharmProjectsSample>tree /f>list.txt

    │  list.txt
    │  manager.py
    │  
    ├─.idea
    │      Sample.iml
    │      misc.xml
    │      modules.xml
    │      workspace.xml
    │      
    ├─app
    │  │  config
    │  │  forms.py
    │  │  models.py
    │  │  views.py
    │  │  __init__.py #原Sample.py
    │  │  
    │  ├─static
    │  │  └─uploads
    │  │          
    │  └─templates
    │      │  base.html
    │      │  home.html
    │      │  index.html
    │      │  login.html
    │      │  upload.html
    │      │  _macro.html
    │      │  
    │      └─includes
    │              _head.html
    │              
    └─doc
            http_methods.md
            

      app文件夹下的才是程序本身,外部的manager.py只是项目开发测试阶段使用的

    #__init__.py(原Sample.py)

    # coding:utf-8
    from flask import Flask
    from flask_bootstrap import Bootstrap
    from flask_nav import Nav
    from flask_nav.elements import *
    from os import path
    from .views import init_views
    from flask_sqlalchemy import SQLAlchemy
    
    basedir = path.dirname(__file__)
    bootstrap = Bootstrap()
    nav = Nav()
    db = SQLAlchemy()
    
    def create_app():
        app = Flask(__name__)
        app.config.from_pyfile('config')
        app.config['SQLALCHEMY_DATABASE_URI'] = 
            'sqlite:///' + path.join(basedir, 'data.sqlite')
        app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
        nav.register_element('top', Navbar(u'Flask入门',
                                           View(u'主页', 'home'),
                                           View(u'关于', 'about'),
                                           Subgroup(u'项目',
                                                    View(u'项目一', 'about'),
                                                    Separator(),
                                                    View(u'项目二', 'service'),
                                                    ),
                                           ))
        bootstrap.init_app(app)
        nav.init_app(app)
        db.init_app(app)
        init_views(app)
        return app

    #views.py 

    # coding:utf-8
    from flask import render_template, request, url_for, flash
    
    def init_views(app):
        @app.route('/')
        def home():
            return render_template('home.html', title_name='welcome')
    
    
        @app.route('/service')
        def service():
            return 'service'
    
        @app.route('/about')
        def about():
            return 'about'
    
        @app.template_test('current_link')
        def is_current_link(link):
            return link == request.path
    
    
        @app.route('/login', methods=['POST', 'GET'])
        def login():
            from forms import LoginForm
            form = LoginForm()
            flash(u'登陆成功')
            return render_template('login.html', title=u'登录', form=form)

    #forms.py

    #coding:utf-8
    from flask.ext.wtf import Form
    from wtforms import StringField,PasswordField,SubmitField
    from wtforms.validators import DataRequired
    class LoginForm(Form):
        username = StringField(label=u'用户名',validators=[DataRequired()])
        password = PasswordField(label=u'密码',validators=[DataRequired()])
        submit = SubmitField(label=u'提交')

    #models.py 

    from . import db
    
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String, nullable=True)
        users = db.relationship('User', backref='role')
    
    class User(db.Model):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String, nullable=True)
        password = db.Column(db.String, nullable=True)
        role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))

     #manager.py

    # coding:utf-8
    from werkzeug.utils import secure_filename
    from flask.ext.script import Manager
    from app import create_app
    
    app = create_app()
    manager = Manager(app)
    
    @manager.command
    def dev():
        from livereload import Server
        live_server = Server(app.wsgi_app)
        live_server.watch('**/*.*')
        live_server.serve(open_url=True)  # 自己打开浏览器
    
    
    if __name__ == '__main__':
        manager.run()
  • 相关阅读:
    【转】C# 注册表简单操作
    [转]VC++之随父窗口变化调整控件大小/位置
    [转]vc 汉字汉语拼音首字母如何获取
    [转]浅析ActiveX控件的CAB压缩
    [转]VC6.0中使用MFC开发ActiveX及简单验证
    ElasticSearch增加索引字段
    单词缩写
    linux命令
    使用PR插件Twixtor Pro对视频补帧
    Linux创建脚本服务
  • 原文地址:https://www.cnblogs.com/wongbingming/p/6822225.html
Copyright © 2011-2022 走看看