Django设置包括一系列python变量,这些变量用于从数据库设置到已安装应用程序的大量内容.甚至许多可重用的应用程序都需要进行一些设置.
有几十个站点,很难管理所有项目的设置.
幸运的是,设置只是一个包含变量的python模块,因此您可以使用任何魔法来填充所需的变量.
您遵循了哪些做法或者您认为可以将各种相关设置分成不同的文件?
显然,现有的enterprisey做法是,开发人员创建一个战争和OPS部门拍打它的青鱼,并采取所有的数据库(并且这样)OPS的东西(根据照顾雅各布的电子邮件).
settings.py您可以创建哪些动态来帮助现有的企业实践?
有没有人建议如何创建一个允许我动态更改设置的系统?例如,我有一个用户可以填写的textarea,现在它的最大字符数限制为1000.有一天,我可能想将其更改为500或2000或其他内容.所以我不想对模型本身施加限制,以免我想要经历备份数据库的噩梦,运行syncdb,重新导入数据库,这样的噩梦只是为了改变一个简单的值.我宁愿在字符长度上检查Javascript或views.py代码.
if (length > value_stored_somewhere)
throw error message
Run Code Online (Sandbox Code Playgroud)
我想我可以把这些值放在settings.py中,或者也许是一个单独的local-settings.py,但这意味着如果我想更改值,我必须重新启动应用程序,对吧?或者我可能是错的,所以请告诉我,如果我错了.
我认为这样做的理想方法是将设置放在数据库中,这样管理员就可以在不触及任何.py文件的情况下即时更改值.我看了一下django-dbsettings,但似乎根本没有任何活动.
请给我建议和解决方案.非常感谢!
我正在尝试将自定义django命令作为Heroku上的计划任务运行.我能够通过在本地执行自定义命令:python manage.py send_daily_email.(注意:我对自定义管理命令本身没有任何问题)
但是,当尝试通过Heroku Scheduler插件"运行"任务时,Heroku会给我以下异常:
Traceback (most recent call last):
File "bin/send_daily_visit_email.py", line 2, in <module>
from django.conf import settings
ImportError: No module named django.conf
Run Code Online (Sandbox Code Playgroud)
我在/bin/send_daily_email.py中放了一个python脚本,它是以下内容:
#! /usr/bin/python
from django.conf import settings
settings.configure()
from django.core import management
management.call_command('send_daily_email') #delegates off to custom command
Run Code Online (Sandbox Code Playgroud)
在Heroku的,但是,我能运行heroku run bin/python-启动蟒蛇壳-并成功导入settings从django.conf
我很确定它与我PYTHON_PATH或Django的可见性有关SETTINGS_MODULE,但我不确定如何解决这个问题.有人能指出我正确的方向吗?有没有更简单的方法来完成我在这里尝试做的事情?
非常感谢您的提示和建议!Heroku新手!:)
编辑:
根据Per Nix的评论,我做了一些调整,并确实发现指定我的确切python路径,我确实通过了Django设置.
我现在收到:
File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 155, in call_command
raise CommandError("Unknown command: %r" % name)
django.core.management.base.CommandError: Unknown command: …Run Code Online (Sandbox Code Playgroud) 我正在按照本教程进行操作,以便在heroku上运行celery和django.
但是,当我输入worker的指定代码时,我在日志中收到此错误:
2011-12-22T05:31:56+00:00 heroku[web.1]: Starting process with command `python canada/manage.py run_gunicorn -b "0.0.0.0:47336" -w 3`
2011-12-22T05:31:56+00:00 app[web.1]: Unexpected error: (<type 'exceptions.NameError'>, NameError("name 'DATABASES' is not defined",), <traceback object at 0x11a9560>)
2011-12-22T05:31:56+00:00 app[web.1]: Traceback (most recent call last):
2011-12-22T05:31:56+00:00 app[web.1]: File "canada/manage.py", line 11, in <module>
2011-12-22T05:31:56+00:00 app[web.1]: import settings
2011-12-22T05:31:56+00:00 app[web.1]: File "/app/canada/settings.py", line 51, in <module>
2011-12-22T05:31:56+00:00 app[web.1]: CELERY_RESULT_DBURI = DATABASES['default']
2011-12-22T05:31:56+00:00 app[web.1]: NameError: name 'DATABASES' is not defined
2011-12-22T05:31:57+00:00 heroku[slugc]: Slug compilation finished
2011-12-22T05:31:57+00:00 heroku[web.1]: State …Run Code Online (Sandbox Code Playgroud) 通过阅读官方的django文档,我对此并不了解. https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging
如果将settings.py中的DEBUG设置为True,我也想启用日志记录.我希望将错误记录在文件中.
怎么做?
这些是我现在拥有的日志记录的默认django设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
Run Code Online (Sandbox Code Playgroud)
PS: 我在我的开发环境中使用Apache + mod_wsgi,因为我使用的是我在局域网上远程访问的开发机器,这意味着我没有使用django开发服务器,我看不到控制台日志消息.
在我的settings.py文件中STATIC_ROOT,MEDIA_ROOT两者当前都指向硬编码位置.例如,STATIC_ROOT路径是:
/home/ian/projectname/mysite/appname/static
Run Code Online (Sandbox Code Playgroud)
我知道在部署项目时会出现问题.
环顾四周,我可以看到我需要利用,os.path但无数的例子让我困惑.
我试图查看设置此文件的不同排列(或获取用于设置BASE_DIR的示例值)但是因为屏幕截图显示我遗漏了一些东西,因为它抱怨文件值.
如果需要我使用Django 1.6
提前致谢.

我已经创建了一个Django应用程序,但现在计划在站点的某些区域使用一些异步(实时)功能.做了一些研究之后,我认为我应该使用gevent-socketio,因此我需要将应用程序服务器切换到Gunicorn.
我已经陷入了部署的第一个障碍Gunicorn,我已经安装了命令sudo apt-get install gunicorn并尝试运行我的应用程序,gunicorn project.wsgi:application但它失败并产生以下错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 473, in spawn_worker
worker.init_process()
File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 100, in init_process
self.wsgi = self.app.wsgi()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/base.py", line 115, in wsgi
self.callable = self.load()
File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 33, in load
return util.import_app(self.app_uri)
File "/usr/lib/python2.7/dist-packages/gunicorn/util.py", line 362, in import_app
__import__(module)
File "/home/alex/django_projects/fantasymatchday_1/fantasymatchday_1/wsgi.py", line 13, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi
2014-11-20 17:31:45 [6605] [INFO] …Run Code Online (Sandbox Code Playgroud) 我正在尝试在settings.py中配置我的日志记录配置,并且有很多选项,我无法复制内置开发服务器日志(打印到控制台).
我希望我的生产日志记录通常在开发服务器日志中打印到控制台的相同信息(GET请求,调试信息等).我要么知道下面需要更改哪些设置,要么知道内置开发服务器日志的设置位置,以便我可以复制它.
LOGGING = {
'version': 1,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/home/django/django_log.log',
'formatter': 'simple'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
}
}
if DEBUG:
# make all loggers use the console.
for logger in LOGGING['loggers']:
LOGGING['loggers'][logger]['handlers'] = ['console']
Run Code Online (Sandbox Code Playgroud)
我也不想在其他任何地方添加任何代码,除非我的settings.py,如果可能的话.我不想进入我的views.py并指定要打印或记录的错误,我从来没有用开发服务器这样做,所以我希望我能弄清楚这一点.
我开始了一个新项目,我得到了:
django.core.exceptions.ImproperlyConfigured: Enable 'django.contrib.auth.context_processors.auth' in your TEMPLATES setting in order to use the admin application.
Run Code Online (Sandbox Code Playgroud)
我跟随django docs 1.9:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
}
]
Run Code Online (Sandbox Code Playgroud)
可能是什么问题(它如何让我配置)?谢谢
要求:Django使用RabbitMQ(Internal)和SQS / Kafka这两个任务共享通用的DB / Django模型。
截至2016年10月,Django设置仅支持一种代理配置
如何使用不同的队列配置和代理设置共享任务?
django ×10
django-settings ×10
heroku ×2
python ×2
settings ×2
amazon-sqs ×1
celery ×1
django-1.6 ×1
django-1.9 ×1
gunicorn ×1
kombu ×1
manage.py ×1
os.path ×1