簡體   English   中英

如何在Django應用中使用Django導入而不啟動應用

[英]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 functions1.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.pys2.py作為單獨的文件運行,而是嘗試使用python manage.py shell從Django項目的主目錄中的這些文件中運行方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM