簡體   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