繁体   English   中英

如何从models.py django调用自定义函数

[英]How to call custom functions from models.py django

我正在构建一个自定义函数来从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:未定义名称“请求”

所以基本上我想从models.py测试这个data_pull函数,看看数据是什么样的。 如何将此request调用request给函数并查看命令行的输出?

这部分代码看起来很奇怪:

if __name__ == "__main__":
    data_pull(request)

通常,如果您将request作为参数传递,您将从视图中调用函数data_pull()并在函数调用中将请求作为参数传递。

您不能只使用if __name__ == "__main__":并期望出现一个请求对象,您需要自己创建一个或使用由视图创建的请求对象(django 引擎在大多数情况下会处理 if) .

文档中的更多信息: https : //docs.djangoproject.com/en/3.2/ref/request-response/#quick-overview


编辑:如果你想要一个HttpRequest对象,那通常意味着你想要从网络浏览器发送的数据(django 引擎放置在request.GETrequest.POST等中的数据)。 这意味着您可能应该从视图中调用函数data_pull()

例如,您的“视图”文件中的此代码(来自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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM