• flask项目——立项准备


    1.创建项目

    1.1 首先打开gitee新建一个仓库

    1.2 然后使用git把项目拉到本地磁盘下,首先执行git clone 从远端仓库把代码拉到本地

    git执行所需代码

    gigit init 初始化git仓库,在文件夹中生成隐藏的.git文件
    git status 查看当前工作区的状态
    cd it05 cd到当前目录下经行提交
    git add . 将当前工作区所有的文件提交到暂存区
    git add 指定文件 提交指定文件
    git config user.name "提交的用户名"
    git config user.email "邮箱" “提交用户的email”
    git commit -m "描述信息" 将暂存区的代码提交到工作区
    git push 将本地仓库代码提交到远端仓库
    git pull 从远端仓库中更新本地仓库代码
    git clone 远端仓库地址

    
    

    个人git全局设置
    git config --global user.name "麟轩"
    git config --global user.email "5342428+LS011218@user.noreply.gitee.com"

     

    1.3 拉到本地之后使用PyCharm打开项目

    1.4 然后建立启动文件manage.py并把python七行仍里面

    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route("/")
    def index():
        return "hello world"
    
    if __name__ == "__main__":
        app.run()

    1.5 并且去Flask源码里面找到要建立的两个文件夹

          “static”:存放静态文件(不需要渲染的不常用的文件)

      “templates”:存放需要渲染的模板

    1.6 建立完成两个文件之后,把所需要文件拖拽到static文件夹里面去:

     2.提交项目到gitee

    2.1 首先使用使用git cd 到项目文件里面

    cd news

    2.2 然后查看一下当前工作区的状态

    git status

     由此可见我们并没有把刚刚的创建的两个文件夹给添加到暂存区

    2.3所以我们需要把我们工作区文件添加到暂存区

    git add .     # 将当前工作区所有的文件提交到暂存区 (注意add和.之间有空格)

     好,看到这个我们就算成了

    2.4接下来我们需要写一下本次提交的描述信息

    git commit -m "描述信息"    #将暂存区的代码提交到工作区

    2.5接下来再来查看一下工作状态看看是否传上去了

    git status        # 查看当前工作区的状态

     看到绿色就证明我们成了

    2.6   我们需要把代码提交给gitee了

    git push  # 将本地仓库代码提交到远端仓库

     然后再去远端仓库去看一下有没有刚刚提交的文件

    有了,成了

    注:因为templates是空文件夹,git默认是不对空文件夹经行维护的所以没有提交过来,所以这样基本上,立项就算是完成了

    3.开启DEBUG调试

    在manage文件中写入以下代码

    from flask import Flask
    
    
    class Config(object):
        # 开启调试模式
        DEBUG = True
    
    
    app = Flask(__name__)
    app.config.from_object(Config)
    
    
    @app.route("/")
    def index():
        return "hello world"
    
    if __name__ == "__main__":
        app.run()
    View Code

    4.集成MySQL

    4.1首先我们从flask_sqlalchemy中导入一下SQLAlchemy这个包

    from flask_sqlalchemy import SQLAlchemy 

    从这个SQKAlchemy格式可以看出这是一个类,然后我们实例化一下这个SQLAlchemy

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    class Config(object):
        # 开启调试模式
        DEBUG = True
    
    
    app = Flask(__name__)
    app.config.from_object(Config)
    
    # 创建连接到MySQL数据库的对象
    db = SQLAlchemy(app)
    
    
    @app.route("/")
    def index():
        return "hello world"
    
    if __name__ == "__main__":
        app.run()
    View Code

    然后我们运行一下看看是否能运行MySQL

    报错了

     看一下原来是数据库配置信息跟动态追踪没有设置

    接下来从错误中找到SQLALCHEMY_DATABASE_URI 和 SQLALCHEMY_TRACK_MODIFICATIONS并且设置一下

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    # 配置类信息
    class Config(object):
        # 开启调试模式
        DEBUG = True
        # 配置MySQL数据库连接信息,真实开发中要使用MySQL数据库的真实ip地址
        SQLALCHEMY_DATABASE_URI = 'mysql://root:@127.0.0.1:3306/news'
        # 动态追踪修改设置,如未设置只会提示警告
        SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    app = Flask(__name__)
    app.config.from_object(Config)
    
    # 创建连接到MySQL数据库的对象
    db = SQLAlchemy(app)
    
    
    @app.route("/")
    def index():
        return "hello world"
    
    if __name__ == "__main__":
        app.run()
    View Code

    4.2在数据库中建立相关设置

    create database news charset=utf8;

    5.集成Redis

    5.1代码配置

    from redis import StrictRedis
    
    
    #  配置类信息
    class Config(object):
        ......
        # 配置Redis数据库:因为redis模块不是flask的拓展,所以就不会自动从config中读取相关信息,只能自己读取。
        #  配置服务器
        REDIS_HOST = "127.0.0.1"
        #  配置端口号
        REDIS_PORT = 6379
    
    
    # 创建连接到Redis数据库的对象
    redis_store = StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)

    5.2 测试rides是否链接成功

      @app.route("/")
    def index():
        # 测试Redis连接是否成功
        redis_store.set("name", "heitao")
        return "hello world"

    测试结果如下表示成功

     6. 开启CSRF保护

    当我们使用flask拓展的WTF表单时,默认开启了CSRF表单,而我们只需要在传入前台页面的时候进行简单设置就可以完成CSRF的保护。而在真实的开发中,前端一般不需要我们去写,所以,我们需要自己来完成CSRF保护。

    from flask_wtf.csrf import CSRFProtect
        ....
    
    # 开启CSRF保护:因为项目中的表单不再使用FlaskForm来实现,所以不会自动地开启CSRF保护,需要我们自己开启
    CSRFProtect(app)

    7.集成session配置

    在之前讲cookie和session的时候,我们说过隐私信息一般都会利用session保存到服务器当中。

    而这里,我们要进行配置的是Session,和我们之前的session又有些不同。为了便于理解,我们先来回顾一下之前session的使用。

    @app.route('/')
    def hello_world():
        # # 测试Redis连接是否成功
        # redis_store.set("name", "tangqiang")
    
        # 测试session
        from flask import session
        session["age"] = 20
    
        return 'Hello World!'

    运行之后报错了

     是因为当运行之后,会报错,因为我们并没有设置secret_key。

        ....
    class Config(object):
        """配置文件的加载"""
        # 项目密钥:CSRF/session,还有一些其他的签名算法会用
        SECRET_KEY = "dfjklajdfldsjaflasdjf"
        ....

    配置完成之后,会发现,session已经写入到了cookie中。

    然后我们指定一下session放在哪里

    from flask_session import Session
    
        ....
    
    # 指定session存储在后端的位置
    Session(app)

    以上代码可以帮我们指定session存放在哪儿,怎么指定,就ctrl+鼠标左键点击Session进去看源码

     通过这个分支,让我们找到了如果

    8.添加脚本命令集成

    from flask_script import Manager
    from flask_migrate import Migrate, MigrateCommand
    ...
    # 创建脚本管理器对象
    manager = Manager(app)
    # 让迁移和app和数据库建立关系
    Migrate(app, db)
    # 将数据库迁移的脚本添加到manager
    manager.add_command('mysql', MigrateCommand)
    ... 
    
    if __name__ == '__main__': 
        manager.run()

    然后我们来到如图位置点击第一个更改一下脚本

     添加runserver脚本运行命令

     然后第一天内容就完成了

  • 相关阅读:
    ORM框架-SQLAchemy使用
    python与MySQL
    python 与rabbitmq
    阻止微信浏览器/QQ浏览器长按弹框“在浏览器打开”
    解决ios不支持按钮:active伪类的方法
    HTTP-FLV直播初探
    对比requirejs更好的理解seajs
    ‘true’==true返回false详解
    支付宝wap支付调起客户端
    JavaScript中基本数据类型和引用数据类型的区别
  • 原文地址:https://www.cnblogs.com/ls011218/p/13764535.html
Copyright © 2020-2023  润新知