我正在构建一个自定义函数来从 mongodb
中提取数据,并希望查看数据在操作之前的样子。
假设我有一个函数可以从mongodb
请求数据
这是我的 models.py 的样子
from bson import json_util
from django.db import models
from django.http import JsonResponse
from pymongo import MongoClient
from bson.json_util import dumps
from bson.json_util import loads
import json
import pymongo
def data_pull(request):
request_data = request.POST.get('Hello', None)
if __name__ == "__main__":
data_pull(request)
要运行 models.py,我从命令行执行 python models.py
但收到此错误
NameError: name 'request' is not defined
所以基本上我想从 models.py 测试这个 data_pull
函数,看看数据是什么样的。如何将此 request
调用提供给函数并查看命令行的输出?
最佳答案
这部分代码看起来很奇怪:
if __name__ == "__main__":
data_pull(request)
通常,如果您传递请求
作为参数,则可以从 View 调用函数data_pull()
,并在函数调用中将请求作为参数传递。
你不能只使用 if __name__ == "__main__":
并期望出现一个请求对象,你需要自己创建一个或使用由 View 创建的请求对象(django引擎在很大程度上负责处理 if )。
文档中的更多信息:https://docs.djangoproject.com/en/3.2/ref/request-response/#quick-overview
编辑:如果您想要一个 HttpRequest
对象,这通常意味着您需要从网络浏览器发送的数据(django 引擎放置在 request.GET
和 request.POST
等)。这意味着您应该从 View 中调用函数data_pull()
。
例如,“views”文件中的代码(来自 https://docs.djangoproject.com/en/3.2/topics/class-based-views/intro/#using-class-based-views 的代码):
from django.http import HttpResponse
from django.views import View
# since you function is declared in 'models', we import it here
from .models import data_pull
class MyView(View):
def get(self, request):
# call the function passing request as argument
data_pull(request)
return HttpResponse('result')
关于python - 如何从 models.py django 调用自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69903757/