[英]How to use Django imports in a django app without starting the app
假設我的主要應用程式結構像
App -
- __init__.py
- xyz.py
API -
- __init__.py
- abc.py
Custom-
- __init__.py
- s1.py
- s2.py
通常,在運行django
我可以從s1.py
文件的from API.abc import function
中s1.py
操作。 但是,當我分別運行s1
文件時,它會導致導入錯誤。 那么如何使現有的導入工作。
如果要在不運行django應用程序的情況下交互式地測試django代碼,則可以通過django shell進行操作 :
python manage.py shell
這將為您提供一個交互式django shell,您可以在其中導入和運行代碼,就像在其他django視圖中一樣
或編寫自定義管理命令 (如果要運行與Django應用程序相關的某些腳本,則很有用)將文件保存在yourproject/yourapp//management/commands/mycommand.py
from django.core.management.base import BaseCommand, CommandError
from polls.models import Question as Poll
class Command(BaseCommand):
help = 'Closes the specified poll for voting'
def add_arguments(self, parser):
parser.add_argument('poll_id', nargs='+', type=int)
def handle(self, *args, **options):
for poll_id in options['poll_id']:
try:
poll = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise CommandError('Poll "%s" does not exist' % poll_id)
poll.opened = False
poll.save()
self.stdout.write(self.style.SUCCESS('Successfully closed poll "%s"' % poll_id))
那么您可以使用python manage.py mycommand
源運行自定義管理命令
如果您只想運行不相關的腳本,請確保在運行python腳本時設置PYTHONPATH和/或DJANGO_SETTINGS_MODULE:
PYTHONPATH=/path/to/project DJANGO_SETTINGS_MODULE=djangoproject.settings python s1.py
我通過將App
路徑添加到python查找導入的系統路徑中來解決此問題。
import os
import sys
path = os.getcwd()
sys.path.append(path)
現在,按照Django目錄結構進行的現有導入無需更改就可以正常工作。
不用將這些s1.py
或s2.py
作為單獨的文件運行,而是嘗試使用python manage.py shell
從Django項目的主目錄中的這些文件中運行方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.