小编LS5*_*321的帖子

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

有时我想在我的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.这是最好的方法吗?

python django django-testing django-command-extensions

11
推荐指数
1
解决办法
3692
查看次数

如何在VMWare中看到Django开发服务器?

我正在尝试从运行Windows的VMWare连接到运行在OS X localhost:8000中的Django开发服务器.

我尝试了各种设置组合,但它们似乎都不起作用:

  • 在localhost:8000上运行Django服务器,在Windows中,连接到VMWare分配给Mac的IP地址,即192.168.XX.XX:8000
  • 在端口80上运行Django服务器
  • 在VMWare分配的Mac的IP上运行Django服务器,例如python manage.py runserver 192.168.XX.XX:8000

这些似乎都不起作用.我有一个也在本地运行的Apache服务器,并且能够连接到它,所以这不是网络的问题.有没有办法从VMWare中连接到localhost:8000?

更新:为了实现此功能,我使用了以下设置:

  • 在VMWare中,将VM的网络设置为"直接连接到物理网络(桥接)",而不是"共享此Mac的网络连接(NAT)"
  • 在Mac本身所在的网络上找到Mac本身的IP地址(而不是VMWare设置的专用网络),例如192.168.1.2.这可以在ifconfig中找到,也可以在系统偏好设置>网络中找到
  • 在该IP地址上启动Django开发服务器:sudo python manage.py runserver 192.168.1.2:80
  • 在VMWare中,连接到位于192.168.1.2的Django站点

感谢randrumree提供以下答案 - 这基本上是相同的解决方案.

django vmware

10
推荐指数
2
解决办法
3085
查看次数

将Django/MySQL站点设置为使用UTF-8

我想让我的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的地方吗?

mysql django utf-8

9
推荐指数
2
解决办法
2万
查看次数

如何诊断挂起的芹菜工人

我正在开始使用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但是所有的方法都没有返回.

关于如何诊断导致工人挂起或有帮助的任何想法.

celery django-celery

8
推荐指数
1
解决办法
3413
查看次数

如何保存django内联formset的顺序?

在Django中,我can_order = True在一个已order_with_respect_to设置的模型上使用了inlineformset .我在前端设置拖放,这导致Django的自动生成的ORDER表单字段(我隐藏)更改以反映新订单.我已经验证我正在将新订单正确地发布到服务器,但Django似乎忽略了它,并按原始顺序保存模型._order数据库中自动创建的字段永远不会更改.

如何让Django使用formset中指定的顺序保存模型?除了调用save()formset 之外,我还需要做一些特别的事情吗?

django django-forms jquery-ui-sortable

8
推荐指数
2
解决办法
4716
查看次数

让django url标签无声地失败

当Django {%url%}模板标签无法撤消提供的URL时,会引发NoReverseMatch错误.这在开发中非常有用,但在生产中,这会使用户因为丑陋的500错误而停止运行,阻止整个页面,并导致他们认为我们的网站已损坏.

模板开发人员不应该打破整个网站的拼写错误.我想要做的是透明地覆盖这种行为,这样,在生产中,如果找不到反向匹配,它会输出一个默认的URL,如"#",并将错误报告给后台的异常跟踪系统,但仍然让用户继续他们正在做的事情,而不会引起500错误.

有没有办法透明地用我自己的更安全的版本替换默认的{%url%}标签?我不想在网站上的每个模板的顶部添加{%load my_custom_url_tag%},因为在某些时候人们会忘记,并且标签的行为将是相同的,唯一的区别在于它如何处理错误.

django django-templates django-urls

2
推荐指数
1
解决办法
421
查看次数