单文件使用 Django 环境
在某些情况下,需要使用单个文件对项目中的某些逻辑进行测试,因为启动整个项目进行测试显得有些麻烦。
要测试,大部分情况下都需要使用项目中的数据库,所以核心是如何把 Django 中的 ORM 环境嵌入到任意单个文件中。
1、可以在项目的根目录下创建一个 PY 文件
假设目录机构如下
qfsite # 项目根目录
├── api
├── db.sqlite3
├── db_config
├── manage.py
├── qfsite
├── statics
├── templates
├── tests.py # 单文件测试
└── users # users app
注意os导入路径的层次
import os, sys
# 获取到项目的根目录
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
# 把项目的根目录放到 sys.path 中
sys.path.insert(0, PROJECT_ROOT)
# 设置环境变量
os.environ["DJANGO_SETTINGS_MODULE"] = 'qfsite.settings'
import django
django.setup()
if __name__ == "__main__":
"""在这里写自己的测试代码"""
# 导入 映射类
from users.models import UsersProfile
# 获取表中的第一条数据
user = UsersProfile.objects.all().first()
print(user.username, user.email)
执行就完事了
返回 JSON数据
方式一
model_name.objects.values()
JsonResponse
模块
from django.http import JsonResponse
from django.views import View
from users.models import UsersProfile
class ApiView(View):
def get(self, request):
users = UsersProfile.objects.values()
return JsonResponse(list(users), safe=False)
image.png
方式二
model_name.objects.all()
serializers
模块
from django.http import HttpResponse
from django.core import serializers
from django.views import View
from users.models import UsersProfile
class ApiSerView2(View):
def get(self, request):
users = UsersProfile.objects.all()
data = serializers.serialize('json', users)
return HttpResponse(data)
image.png