• 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脚本运行命令

     然后第一天内容就完成了

  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/ls011218/p/13764535.html
Copyright © 2020-2023  润新知