简体   繁体   中英

How to use functions from a custom module in Python Django shell

I have a python file called my_functions.py in which I have the following code:

from core.models import Blog

def news(): 
    b = Blog(name='New Blog', tagline='All the latest news.')
    b.save()

My main app folder in django is called core and I have put my python file in there. In the shell I am able to do the import: from core import my_functions However I get an error AttributeError: module 'core.my_functions' has no attribute 'news' when I try to run the code my_functions.news() . How can I run the news function in the shell?

My tree structure is as follows:

core
    -__init__.py
    -admin.py
    -apps.py
    -models.py
    -my_functions.py
    -tests.py
    -urls.py
    -views.py

Everthing else works as normal but I just cant seem to figure why I cant do this simple import and run the function. I'm using VSCode.

Make sure there's an __init__.py file in the core directory. Then:

from core.my_functions import news

Also you have to restart your shell if you make changes to any file in your project, since the django shell will load all modules in memory at launch time.

Create your file and write your function. In my case was:

# /home/$(USER)/repos/bo/apps/base/queries.py
# "apps.base", added to INSTALLED_APPS list in settings.py

from apps.base.models import Player
from core.models import Blog

def news(): 
    b = Blog(name='New Blog', tagline='All the latest news.')
    b.save()
    return b


def count_player_overs():
    all_playerovers = Player.objects.all()
    count_all_playerovers = all_playerovers.count()
    return count_all_playerovers


print('count_all_playerovers: {}'.format(count_player_overs()))
print('saved news object: {}'.format(news()))

# this folder has manage.py
cd /home/$(USER)/repos/bo/

And run:

./manage.py shell -c "from apps.base import queries;"

Result:

count_all_playerovers: 376

saved news object: New Blog

You can change the code and run again ./manage.py shell -c "from apps.base import queries;" and it will re-import the module and run the function with all your changes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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