zoukankan      html  css  js  c++  java
  • 学习python-20191230(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数

    视频06:

    1、自动导包快捷键——默认为alt + enter 键组合          选中的字符由小写变为大写——Ctrl + Shift + U键组合

    2、DataRequired()——防止用户只传入一个空格

    3、使用组合验证器的方式来完成校验。

      从中学习构建代码的思想:把独立的功能拆开,写到不同的函数或不同的对象中去,使用时则可任意去组合这些函数和对象,来实现我们要的功能。

    from wtforms import Form,StringField,IntegerField
    from wtforms.validators import Length, NumberRange, DataRequired
    
    class SearchForm(Form):
        q = StringField(validators=[DataRequired(), Length(min=1,max=30)])#内置的验证器,validators提供的是一个数组
        page = IntegerField(validators=[NumberRange(min=1,max=99)],default=1)

     4、定义一个类变量,并在本类的方法中使用它(当前不推荐,如下代码仅为说明类变量的定义及使用)

    class YuShuBook:
        per_page = 15  #定义一个类变量来存储,正确的做法是把它写到配置文件中去,因为可能需要更改每页的记录数
    
        @classmethod
        def search_by_keyword(cls,self,keyword,page=1):
            url = cls.keyword_url.format(keyword,cls.per_page,(page-1)*cls.per_page)
            result = HTTP.get(url)
            return result

    5、要获取配置文件中的配置信息,要先导入current_app

    from flask import current_app
    from flask import current_app  # 要获取配置文件中的配置信息,因不能直接使用flask核心对象,所以要先导入current_app
    
    class YuShuBook:
    
        @classmethod
        def search_by_keyword(cls,self,keyword,page=1):
            url = cls.keyword_url.format(keyword,cls.current_app.config['PER_PAGE'], cls.calculate_start(page))
            result = HTTP.get(url)
            return result
    
        @staticmethod
        def calculate_start(page):
            # 把如下语句单独定义成一个函数,是一个好的习惯,提高代码可读性
            return (page - 1) * current_app.config['PER_PAGE']

    6、拆分配置文件

    把配置文件分成两个,secure.py 和 setting

     secure中存放——涉及安全性的配置信息

     setting中存放——不涉及安全性的配置信息,生产环境和开发环境中配置相同的信息也放这里

    ————————————————————————————————————————————————————————————

    视频07:

    1、控制HTTP请求的数量

    把数据在本地数据库中缓存起来。这样查询时,首先从本地数据库查,以减少请求数量。

    2、在Navicat for MySQL中,手动新建一个mysql数据库

    字符集选:utf8mb4 -- UTF-8 Unicode  即最后一个选择

    排序规则:utf8mb4_general_ci             即第一个选项

    3、数据表创建的三种方式:

    Database first  Model first  Code first  (推荐) 

    ————————————————————————————————————————————————————————————

    视频08:

    1、模型层   MVC中的M层 (models);

    2、安装Flask-SQLAlchemy :   pipenv install Flask-SQLAlchemy  或在pycharm的settings中安装;

    3、使 sqlalchemy 创建模型类:

    from sqlalchemy import Column, Integer, String
    
    # 通过模型在数据库中自动生成数据表,使用sqlalchemy,它并不是flask所特有,是一个第三方包
    # Flask_SQLAlchemy对sqlalchemy进行了封闭,提供了更加人性化的api来操作sqlalchemy
    
    class Book():
        id = Column(Integer, primary_key=True, autoincrement=True)
        title = Column(String(50), nullable=False)
        _author = Column('author', String(30), default='未名')
        pages = Column(Integer)
        isbn = Column(String(15), nullable=False, unique=True) #指定isbn在表中不能重复,映射为数据表时会为此列加一列索引
        image = Column(String(50))
    
        def sample(self):
            pass

    ————————————————————————————————————————————————————————————

    视频09:

    1、把数据模型映射到数据库中去,首先需要实例化一个SQLAlchemy对象。

    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy()
    
    class Book(db.Model):
        id = Column(Integer, primary_key=True, autoincrement=True)

    2、SQLAlchemy和Flask核心对象的关联,代码在app\__init__.py中书写,所以有flask插件都是这样进行关联的

    from flask import Flask
    from app.web.book import web# 1.导入蓝图模块web
    from app.models.book import db
    
    def create_app():
        app = Flask(__name__)
        app.config.from_object('app.secure')
        app.config.from_object('app.setting')
        # 3.在app中调用蓝图注册函数
        register_blueprint(app)
        
        db.init_app(app)
       db.create_all() #把所有模型映射到数据库中去
    return app # 2.把蓝图注册表flask核心对象中 def register_blueprint(app): app.register_blueprint(web)# 注册蓝图

    3、配置数据库连接,代码在appsecure.py中书写,SQLAlchemy是支持多数据连接,当前仅连接一个数据库

    SQLALCHEMY_DATABASE_URI = 'mysql+cymysql://root:ddh123@localhost:3306/fisher'

    因为是用cymysql进行连接,所以要先安装cymysql : pipenv install cymysql

    
    
  • 相关阅读:
    修改Tomcat可支持get形式url长度
    UTF-8 带签名和不带签名的区别
    注册asp.net 4.0版本到IIS服务器中
    C#计算字符串长度,汉字算两个字符
    高德地图Javascript API设置域名白名单
    金三银四招聘季,这些BAT以及独角兽互联网公司官方招聘网站值得关注。(个人梳理备用:附BAT以及独角兽公司官方招聘网址)
    【转载】 C#工具类:Csv文件转换类
    【转载】ASP.NET生成图片的缩略图
    【转载】IIS报错不是有效的Win32应用程序
    【转载】C#工具类:FTP操作辅助类FTPHelper
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12120051.html
Copyright © 2011-2022 走看看