flask项目——立项准备 1.创建项目  2.提交项目到gitee 3.开启DEBUG调试 4.集成MySQL 5.集成Redis  6. 开启CSRF保护 7.集成session配置 8.添加脚本命令集成

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文件夹里面去:

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

 2.提交项目到gitee

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

cd news

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

git status

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

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

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

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

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

 看到绿色就证明我们成了

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

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

有了,成了

注:因为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

报错了

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

接下来从错误中找到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"

测试结果如下表示成功

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

 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!'

运行之后报错了

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

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

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

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

from flask_session import Session

    ....

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

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

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

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()

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

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

 添加runserver脚本运行命令

flask项目——立项准备
1.创建项目
 2.提交项目到gitee
3.开启DEBUG调试
4.集成MySQL
5.集成Redis
 6. 开启CSRF保护
7.集成session配置
8.添加脚本命令集成

 然后第一天内容就完成了