gpt4 book ai didi

python - 如何在 Django 项目的上下文中执行任意脚本?

转载 作者:太空狗 更新时间:2023-10-29 18:06:19 29 4
gpt4 key购买 nike

有时我想在我的 Django 项目的上下文中执行一个文件,就像我在使用 shell 一样,但使用文本编辑器很方便。这主要是为了尝试一些东西,或者在将某些功能放入 View 、测试、重复任务或管理命令之前快速制作原型(prototype)。

我知道我可以将这些行放在我的 .py 文件的顶部,它会在 Django 上下文中运行:

import sys
sys.path.append('/location/of/projet')
from django.core.management import setup_environ
import settings
setup_environ(settings)

我认为制作一个接受参数的管理命令、一个要运行的 python 模块并在 Django 环境中执行它会更容易。这是我写的“runmodule”命令:

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
help = "Runs an arbitrary module, in the Django environment, for quick prototyping of code that's too big for the shell."

def handle(self, *args, **options):
if not args:
return
module_name = args[0]

try:
__import__(module_name)
except ImportError:
print("Unable to import module %s. Check that is within Django's PYTHONPATH" % (module_name))

这看起来可行——我可以将一些代码粘贴到模块中,并将其作为参数传递给该命令,它就会被执行,例如

python manage.py runmodule myapp.trysomethingout

这将执行 myapp/trysomethingout.py。这是最好的方法吗?

最佳答案

使用正确的 django 上下文执行脚本的最佳方法是将 DJANGO_SETTINGS_MODULE 环境变量设置为您的设置模块(如果需要,还可以设置适当的 PYTHONPATH)。在 Windows 中,这通常意味着执行:

set DJANGO_SETTINGS_MODULE=setting 

在 bash 中:

export DJANGO_SETTINGS_MODULE=setting 

您现在可以导入您的模型等。

参见:https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings .

请注意,为了导入 settings 模块,应该使用 from django.conf import settings。这考虑了 DJANGO_SETTINGS_MODULE 而不是自动使用 settings.py 。

关于python - 如何在 Django 项目的上下文中执行任意脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318482/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com