有时我想在我的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.这是最好的方法吗?
我正在尝试从运行Windows的VMWare连接到运行在OS X localhost:8000中的Django开发服务器.
我尝试了各种设置组合,但它们似乎都不起作用:
这些似乎都不起作用.我有一个也在本地运行的Apache服务器,并且能够连接到它,所以这不是网络的问题.有没有办法从VMWare中连接到localhost:8000?
感谢randrumree提供以下答案 - 这基本上是相同的解决方案.
我想让我的Django站点以一种万无一失的方式使用UTF-8 for MySQL,无论MySQL安装是否使用UTF-8作为其默认值.除了使用UTF-8编码创建表之外,我还在settings.py中的数据库初始化中添加了以下内容,以确保连接也使用utf-8:
'OPTIONS': { 'init_command': 'SET storage_engine=INNODB; SET names "utf8"' }
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?还有另一个需要执行SET NAMES的地方吗?
我正在开始使用Celery进行Django项目.为了本地开发目的,我根据这些指导http://ask.github.com/celery/tutorials/otherqueues.html#django-database设置了djcelery和djkombu(数据库传输),但计划使用rabbitmq生产服务器.
我发现它有效,但是一个或多个工人会随意挂起.工作人员依赖于不同的任务,因此不是一个特定任务进入无限循环的情况.当我试图关闭芹菜时,在日志中我通常会看到除了一个以外的所有工人.在工作人员挂起之前和之后,我都尝试使用celeryctl获取有关工作人员的信息,但celeryctl总是失败并显示消息"错误:没有节点在时间限制内回复.".我也尝试过检查工作人员http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workers但是所有的方法都没有返回.
关于如何诊断导致工人挂起或有帮助的任何想法.
在Django中,我can_order = True在一个已order_with_respect_to设置的模型上使用了inlineformset .我在前端设置拖放,这导致Django的自动生成的ORDER表单字段(我隐藏)更改以反映新订单.我已经验证我正在将新订单正确地发布到服务器,但Django似乎忽略了它,并按原始顺序保存模型._order数据库中自动创建的字段永远不会更改.
如何让Django使用formset中指定的顺序保存模型?除了调用save()formset 之外,我还需要做一些特别的事情吗?
当Django {%url%}模板标签无法撤消提供的URL时,会引发NoReverseMatch错误.这在开发中非常有用,但在生产中,这会使用户因为丑陋的500错误而停止运行,阻止整个页面,并导致他们认为我们的网站已损坏.
模板开发人员不应该打破整个网站的拼写错误.我想要做的是透明地覆盖这种行为,这样,在生产中,如果找不到反向匹配,它会输出一个默认的URL,如"#",并将错误报告给后台的异常跟踪系统,但仍然让用户继续他们正在做的事情,而不会引起500错误.
有没有办法透明地用我自己的更安全的版本替换默认的{%url%}标签?我不想在网站上的每个模板的顶部添加{%load my_custom_url_tag%},因为在某些时候人们会忘记,并且标签的行为将是相同的,唯一的区别在于它如何处理错误.