当我./manage.py process_email
在我的应用程序中,我得到ImportError: No module named commands.process_email
.
我的目录布局是:
./
??? __init__.py
??? admin.py
??? forms.py
??? management
? ??? __init__.py
? ??? commands
? ??? __init.py__
? ??? process_email.py
??? models.py
??? views.py
Run Code Online (Sandbox Code Playgroud)
process_email命令的来源是:
from django.core.management.base import BaseCommand, CommandError
from django.conf import settings
from website.event.models import Event
class Command(BaseCommand):
def handle(self, *args, **options):
process_email()
def process_email():
print "processing email"
Run Code Online (Sandbox Code Playgroud)
和我得到的错误:
(website.com)kings@bob-kings-MacBook ~/code/website.com/website $ > ./manage.py process_email
Traceback (most recent call last):
File "./manage.py", line 14, in <module> …
Run Code Online (Sandbox Code Playgroud) 有时我想在我的Django项目的上下文中执行一个文件,就像我使用shell一样,但是使用文本编辑器也很方便.这主要是为了尝试一些东西,或者在将其放入视图,测试,重复任务或管理命令之前快速构建一些功能原型.
我知道我可以将这些行放在我的.py文件的顶部,它将在Django上下文中运行:
import sys
sys.path.append('/location/of/projet')
from django.core.management import setup_environ
import settings
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)
我认为制作一个带有参数的管理命令,运行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))
Run Code Online (Sandbox Code Playgroud)
这看起来很有效 - 我可以在模块中粘贴一些代码,并将其作为参数传递给此命令,并且它将被执行,例如
python manage.py runmodule myapp.trysomethingout
Run Code Online (Sandbox Code Playgroud)
这将执行myapp/trysomethingout.py.这是最好的方法吗?
我喜欢django服务器如何在代码更改时自动重新加载自身,因此无需重新启动服务器。
当前,我们使用django自定义管理命令,这可能需要很长时间才能完成。
有什么方法可以对我们的管理命令使用django服务器的自动重载功能?
例如,如果检测到基础django代码库的更改,该命令将重新加载自身并恢复非常长(无状态)循环的执行。
是否允许将自定义 Django 命令分组到同一 Django 应用程序内的单独文件夹?
我有很多这样的东西,想按目的对它们进行逻辑分组。创建了文件夹,但 Django 找不到它们。
也许我试图让他们走错路。尝试过:
python manage.py process_A_related_data
__init__.py
python manage.py folderA process_A_related_data
python manage.py folderA.process_A_related_data
python manage.py folderA/process_A_related_data
出现以下错误:
Unknown command: 'folderA/process_A_related_data'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud) 当我在Eclipse中创建新的运行配置时,它会创建一个如下运行命令:python.exe -u manage.py runscript my_script.py
,无论我是尝试制作Python运行配置,还是运行Django运行配置.
我如何让它运行python.exe manage.py runscript my_script.py
呢?(没有-u开关).
我假设-u是它破坏的原因,因为python.exe manage.py runscript my_script.py
从一个普通的旧bash提示中运行正常.