Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

353
Views
How to call custom functions from models.py django

I'm building a custom function to pull the data from mongodb and want to see the data what it is look like before the manipulation.

say I have a function to request the data from mongodb

Here is how my models.py looks like

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)

to run the models.py I do python models.py from the command line but getting this error

NameError: name 'request' is not defined

So basically I want to test this data_pull function from models.py and see that what the data looks like. How can I feed this request call into the function and see the output from commandline?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

This part of your code seems strange:

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

Usually, if you pass a request as argument, you would call the function data_pull() from a view and pass the request as an argument in the function call.

You cannot just use if __name__ == "__main__": and expect a request object to appear, you need to create one yourself or use the request object that is created by the views (the django engine takes care of if for the most part).

More info in the docs: https://docs.djangoproject.com/en/3.2/ref/request-response/#quick-overview


EDIT: if you want a HttpRequest object, that usually means that you want the data that is sent from a webbrowser (the data that the django engine places inside request.GET and request.POST and others). That means that you should probably call you function data_pull() from a view.

For example this code in your 'views' file (code from 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')
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!