Diango博客--14.使用 Django 项目中的 ORM 编写伪造测试数据脚本

本文介绍了如何在Django项目中利用Faker库快速生成测试数据,包括用户、分类、标签和文章内容。通过编写脚本,可以自动清除旧数据并批量创建新的测试数据,便于本地开发时进行分页效果测试。
摘要由CSDN通过智能技术生成

0.思路引导

1)为了防止博客首页展示的文章过多以及提升加载速度,可以对文章列表进行分页展示。

2)不过这需要比较多的文章才能达到分页效果,但本地开发时一般都只有几篇测试文章,如果一篇篇手工添加将会非常麻烦。

3)解决方案是我们可以写一个脚本,自动生成任意数量的测试数据。脚本写好后,只需运行脚本就可以往数据库填充大量测试数据。

1.脚本目录结构

在项目根目录下新建scripts 文件夹,并新建__init__.py,fake.py,md.sample三个文件,目录结构如下:

HelloDjango-blog-tutorial\
    blog\
    blogproject\
    ...
    scripts\
        __init__.py
        fake.py
        md.sample

注意:

1)其中 fake.py 是生成测试数据的脚本;

2)md.sample 是一个纯文本文件,内容是生成用于测试 Markdown 的文本。

2.使用 Faker 快速生成测试数据

博客文章包含丰富的内容元素,例如标题、正文、分类、标签。如果手工输入这些相关元素的文本会非常耗时,我们将借助一个 Python 的第三方库 Faker (造假工厂)来快速生成这些测试用的文本内容。

首先安装 Faker:

$ pipenv install Faker

Faker 通过不同的 Provider 来提供各种不同类型的假数据,我们将在下面的脚本中讲解它的部分用法,完整的用法可以参考其官方文档

3.批量生成测试数据

文件位置:HelloDjango-blog-tutorial \scropts \fake.py

1)首先,导入一些会用到的模块,然后通过脚本所在文件找到项目根目录,将根目录添加到 Python 的模块搜索路径中,这样在运行脚本时 Python 才能够找到相应的模块并执行;

import os
import pathlib
import random
import sys
from datetime import timedelta

import django
import faker
from django.utils import timezone

# 将项目根目录添加到 Python 的模块搜索路径中
back = os.path.dirname
BASE_DIR = back(back(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

2)设置 DJANGO_SETTINGS_MODULE 环境变量,这将指定 django 启动时使用的配置文件,然后运行 django.setup() 启动 django。这是关键步骤,只有在 django 启动后,我们才能使用 django 的 ORM 系统。django 启动后,就可以导入各个模型,以便创建数据。

if __name__ == '__main__':
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blogproject.settings.local")
    django.setup()

    from blog.models import Category, Post, Tag
    from comments.models import Comment
    from django.contrib.auth.models import User

3)清除旧数据,因此每次运行脚本,都会清除原有数据,然后重新生成。

print('clean database')
    Post.objects.all().delete()
    Category.objects
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值