Manage.py 迁移从未在 Aldryn 项目中奏效——不可能很好,对吧?
Manage.py migration hasn't ever worked in Aldryn project -- can't be good, right?
过去几周,我在 Aldryn 网站上工作时偶尔会尝试 运行 python manage.py migrate
,但从未奏效。它并没有太困扰我,但我认为它可能应该如此(我对 Django CMS 及其方法还很陌生,如果我现在不让它工作,恐怕以后会影响到我)。这是我在 运行 执行命令时得到的输出:
Joey-Keetons-Mac-Pro-2:fringeclass sparkholiday$ python manage.py migrate
/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons/aldryn-
django/aldryn_config.py:48: RuntimeWarning: no database configured. Falling back
to DATABASE_URL=sqlite:////Users/sparkholiday/Documents/aldryn workspace folder
/fringeclass/data/db.sqlite3
RuntimeWarning,
/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons/aldryn-
django/aldryn_config.py:56: RuntimeWarning: no cache configured. Falling back to
CACHE_URL=locmem://
RuntimeWarning,
Traceback (most recent call last):
File "manage.py", line 7, in <module>
startup.manage(path=os.path.dirname(os.path.abspath(__file__)))
File "/Library/Python/2.7/site-packages/aldryn_django/startup.py", line 12, in
manage
utility.execute()
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", l
ine 302, in execute
settings.INSTALLED_APPS
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 55, in
__getattr__
self._setup(name)
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 43, in
_setup
self._wrapped = Settings(settings_module)
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 99, in
__init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/i
mportlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/settin
gs.py", line 28, in <module>
aldryn_addons.settings.load(locals())
File "/Library/Python/2.7/site-packages/aldryn_addons/settings.py", line 142,
in load
settings_json_path=settings_json_path,
File "/Library/Python/2.7/site-packages/aldryn_addons/settings.py", line 174,
in load_addon_settings
aldryn_config.Form().to_settings(addon_settings, settings)
File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons
/aldryn-django/aldryn_config.py", line 123, in to_settings
self.server_settings(settings, env=env)
File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons
/aldryn-django/aldryn_config.py", line 211, in server_settings
os.path.dirname(settings['NGINX_CONF_PATH']),
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpat
h.py", line 122, in dirname
i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'
我知道 Python 中的 NoneType 情况意味着正在调用的东西不存在,或者没有正确定义,它似乎指向这里的 NGINX 配置,但我我不知道如何解决它。有人在其他地方的线程上(不记得在哪里)建议有人通过完全摆脱涉及 NGINX 的代码段来解决基本相同的问题,但是......我需要那个东西!这是 aldryn_config.py
文件中 aldryn-django
部分的代码(我认为没有人希望我 post 整个文件,但如果有帮助我会编辑它):
def server_settings(self, settings, env):
settings['PORT'] = env('PORT', 80)
settings['BACKEND_PORT'] = env('BACKEND_PORT', 8000)
settings['ENABLE_NGINX'] = env('ENABLE_NGINX', False)
settings['ENABLE_PAGESPEED'] = env(
'ENABLE_PAGESPEED',
env('PAGESPEED', False),
)
settings['ENABLE_BROWSERCACHE'] = env(
'ENABLE_BROWSERCACHE',
env('BROWSERCACHE', False),
)
settings['BROWSERCACHE_MAX_AGE'] = env('BROWSERCACHE_MAX_AGE', 300)
settings['NGINX_CONF_PATH'] = env('NGINX_CONF_PATH')
settings['NGINX_PROCFILE_PATH'] = env('NGINX_PROCFILE_PATH')
settings['PAGESPEED_ADMIN_HTPASSWD_PATH'] = env(
'PAGESPEED_ADMIN_HTPASSWD_PATH',
os.path.join(
os.path.dirname(settings['NGINX_CONF_PATH']),
'pagespeed_admin.htpasswd',
)
)
settings['PAGESPEED_ADMIN_USER'] = env('PAGESPEED_ADMIN_USER')
settings['PAGESPEED_ADMIN_PASSWORD'] = env('PAGESPEED_ADMIN_PASSWORD')
settings['DJANGO_WEB_WORKERS'] = env('DJANGO_WEB_WORKERS', 3)
settings['DJANGO_WEB_MAX_REQUESTS'] = env('DJANGO_WEB_MAX_REQUESTS', 500)
settings['DJANGO_WEB_TIMEOUT'] = env('DJANGO_WEB_TIMEOUT', 120)
还有我的 settings.py
(因为让我们把它加长一点,嗯?):
# -*- coding: utf-8 -*-
INSTALLED_ADDONS = [
# <INSTALLED_ADDONS> # Warning: text inside the INSTALLED_ADDONS tags is auto-generated. Manual changes will be overwritten.
'aldryn-addons',
'aldryn-django',
'aldryn-sso',
'aldryn-django-cms',
'aldryn-devsync',
'aldryn-background-image',
'aldryn-bootstrap3',
'aldryn-categories',
'aldryn-common',
'aldryn-disqus',
'aldryn-emailsettings',
'aldryn-faq',
'aldryn-forms',
'aldryn-gallery',
'aldryn-mailchimp',
'aldryn-newsblog',
'aldryn-people',
'aldryn-style',
'djangocms-fbcomments',
'reversion',
'aldryn_reversion',
'sortedm2m',
'taggit',
'filer',
'easy_thumbnails',
'djangocms_text_ckeditor',
'aldryn_translation_tools',
'aldryn_boilerplates',
# </INSTALLED_ADDONS>
]
import aldryn_addons.settings
aldryn_addons.settings.load(locals())
# all django settings can be altered here
INSTALLED_APPS.extend([
# add you project specific apps here
])
ALDRYN_BOILERPLATE_NAME='bootstrap3'
TEMPLATE_CONTEXT_PROCESSORS.extend([
'aldryn_boilerplates.context_processors.boilerplate',
# add your template context processors here
])
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
# 'easy_thumbnails.processors.scale_and_crop',
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters',
'easy_thumbnails.processors.background',
)
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
# important! place right before django.contrib.staticfiles.finders.AppDirectoriesFinder
'aldryn_boilerplates.staticfile_finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
MIDDLEWARE_CLASSES.extend([
# add your own middlewares here
])
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'aldryn_boilerplates.template_loaders.AppDirectoriesLoader',
'django.template.loaders.app_directories.Loader',
'django.template.loaders.eggs.Loader'
)
非常感谢您阅读本文 - 任何建议都会很棒!我喜欢前端编辑,但如果您不能 CSS 它就不是很有用了!我想我可以使用 git(git 和 docker 都在没有迁移命令工作的情况下工作,这就是我推迟这么久的原因),但我怀疑我缺乏迁移导致我的虚拟环境出现问题,这最终可能成为一场噩梦:/
看起来您是从本地机器 运行ning python manage.py migrate
而不是从 docker 容器内部。
容器路径不同(例如源代码位于 /app
),所有需要的要求都已安装,并且 postgres 数据库已链接并可用。
试试这个:
docker-compose run --rm web python manage.py migrate
它的作用是:
docker-compose
:该命令根据同目录docker-compose.yml
文件中的配置进行docker操作
run
:创建并运行一个新容器
--rm
:命令完成后删除容器(因为这是一次性命令,所以保留它没有意义)
web
:从 docker-compose.yml
中选择“web
”服务
python manage.py migrate
:在容器 上下文中对运行的命令
也可以运行bash
作为命令。这将在容器内为您提供交互式提示。
过去几周,我在 Aldryn 网站上工作时偶尔会尝试 运行 python manage.py migrate
,但从未奏效。它并没有太困扰我,但我认为它可能应该如此(我对 Django CMS 及其方法还很陌生,如果我现在不让它工作,恐怕以后会影响到我)。这是我在 运行 执行命令时得到的输出:
Joey-Keetons-Mac-Pro-2:fringeclass sparkholiday$ python manage.py migrate
/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons/aldryn-
django/aldryn_config.py:48: RuntimeWarning: no database configured. Falling back
to DATABASE_URL=sqlite:////Users/sparkholiday/Documents/aldryn workspace folder
/fringeclass/data/db.sqlite3
RuntimeWarning,
/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons/aldryn-
django/aldryn_config.py:56: RuntimeWarning: no cache configured. Falling back to
CACHE_URL=locmem://
RuntimeWarning,
Traceback (most recent call last):
File "manage.py", line 7, in <module>
startup.manage(path=os.path.dirname(os.path.abspath(__file__)))
File "/Library/Python/2.7/site-packages/aldryn_django/startup.py", line 12, in
manage
utility.execute()
File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", l
ine 302, in execute
settings.INSTALLED_APPS
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 55, in
__getattr__
self._setup(name)
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 43, in
_setup
self._wrapped = Settings(settings_module)
File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 99, in
__init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/i
mportlib/__init__.py", line 37, in import_module
__import__(name)
File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/settin
gs.py", line 28, in <module>
aldryn_addons.settings.load(locals())
File "/Library/Python/2.7/site-packages/aldryn_addons/settings.py", line 142,
in load
settings_json_path=settings_json_path,
File "/Library/Python/2.7/site-packages/aldryn_addons/settings.py", line 174,
in load_addon_settings
aldryn_config.Form().to_settings(addon_settings, settings)
File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons
/aldryn-django/aldryn_config.py", line 123, in to_settings
self.server_settings(settings, env=env)
File "/Users/sparkholiday/Documents/aldryn workspace folder/fringeclass/addons
/aldryn-django/aldryn_config.py", line 211, in server_settings
os.path.dirname(settings['NGINX_CONF_PATH']),
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpat
h.py", line 122, in dirname
i = p.rfind('/') + 1
AttributeError: 'NoneType' object has no attribute 'rfind'
我知道 Python 中的 NoneType 情况意味着正在调用的东西不存在,或者没有正确定义,它似乎指向这里的 NGINX 配置,但我我不知道如何解决它。有人在其他地方的线程上(不记得在哪里)建议有人通过完全摆脱涉及 NGINX 的代码段来解决基本相同的问题,但是......我需要那个东西!这是 aldryn_config.py
文件中 aldryn-django
部分的代码(我认为没有人希望我 post 整个文件,但如果有帮助我会编辑它):
def server_settings(self, settings, env):
settings['PORT'] = env('PORT', 80)
settings['BACKEND_PORT'] = env('BACKEND_PORT', 8000)
settings['ENABLE_NGINX'] = env('ENABLE_NGINX', False)
settings['ENABLE_PAGESPEED'] = env(
'ENABLE_PAGESPEED',
env('PAGESPEED', False),
)
settings['ENABLE_BROWSERCACHE'] = env(
'ENABLE_BROWSERCACHE',
env('BROWSERCACHE', False),
)
settings['BROWSERCACHE_MAX_AGE'] = env('BROWSERCACHE_MAX_AGE', 300)
settings['NGINX_CONF_PATH'] = env('NGINX_CONF_PATH')
settings['NGINX_PROCFILE_PATH'] = env('NGINX_PROCFILE_PATH')
settings['PAGESPEED_ADMIN_HTPASSWD_PATH'] = env(
'PAGESPEED_ADMIN_HTPASSWD_PATH',
os.path.join(
os.path.dirname(settings['NGINX_CONF_PATH']),
'pagespeed_admin.htpasswd',
)
)
settings['PAGESPEED_ADMIN_USER'] = env('PAGESPEED_ADMIN_USER')
settings['PAGESPEED_ADMIN_PASSWORD'] = env('PAGESPEED_ADMIN_PASSWORD')
settings['DJANGO_WEB_WORKERS'] = env('DJANGO_WEB_WORKERS', 3)
settings['DJANGO_WEB_MAX_REQUESTS'] = env('DJANGO_WEB_MAX_REQUESTS', 500)
settings['DJANGO_WEB_TIMEOUT'] = env('DJANGO_WEB_TIMEOUT', 120)
还有我的 settings.py
(因为让我们把它加长一点,嗯?):
# -*- coding: utf-8 -*-
INSTALLED_ADDONS = [
# <INSTALLED_ADDONS> # Warning: text inside the INSTALLED_ADDONS tags is auto-generated. Manual changes will be overwritten.
'aldryn-addons',
'aldryn-django',
'aldryn-sso',
'aldryn-django-cms',
'aldryn-devsync',
'aldryn-background-image',
'aldryn-bootstrap3',
'aldryn-categories',
'aldryn-common',
'aldryn-disqus',
'aldryn-emailsettings',
'aldryn-faq',
'aldryn-forms',
'aldryn-gallery',
'aldryn-mailchimp',
'aldryn-newsblog',
'aldryn-people',
'aldryn-style',
'djangocms-fbcomments',
'reversion',
'aldryn_reversion',
'sortedm2m',
'taggit',
'filer',
'easy_thumbnails',
'djangocms_text_ckeditor',
'aldryn_translation_tools',
'aldryn_boilerplates',
# </INSTALLED_ADDONS>
]
import aldryn_addons.settings
aldryn_addons.settings.load(locals())
# all django settings can be altered here
INSTALLED_APPS.extend([
# add you project specific apps here
])
ALDRYN_BOILERPLATE_NAME='bootstrap3'
TEMPLATE_CONTEXT_PROCESSORS.extend([
'aldryn_boilerplates.context_processors.boilerplate',
# add your template context processors here
])
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
# 'easy_thumbnails.processors.scale_and_crop',
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters',
'easy_thumbnails.processors.background',
)
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
# important! place right before django.contrib.staticfiles.finders.AppDirectoriesFinder
'aldryn_boilerplates.staticfile_finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
MIDDLEWARE_CLASSES.extend([
# add your own middlewares here
])
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'aldryn_boilerplates.template_loaders.AppDirectoriesLoader',
'django.template.loaders.app_directories.Loader',
'django.template.loaders.eggs.Loader'
)
非常感谢您阅读本文 - 任何建议都会很棒!我喜欢前端编辑,但如果您不能 CSS 它就不是很有用了!我想我可以使用 git(git 和 docker 都在没有迁移命令工作的情况下工作,这就是我推迟这么久的原因),但我怀疑我缺乏迁移导致我的虚拟环境出现问题,这最终可能成为一场噩梦:/
看起来您是从本地机器 运行ning python manage.py migrate
而不是从 docker 容器内部。
容器路径不同(例如源代码位于 /app
),所有需要的要求都已安装,并且 postgres 数据库已链接并可用。
试试这个:
docker-compose run --rm web python manage.py migrate
它的作用是:
docker-compose
:该命令根据同目录docker-compose.yml
文件中的配置进行docker操作run
:创建并运行一个新容器--rm
:命令完成后删除容器(因为这是一次性命令,所以保留它没有意义)web
:从docker-compose.yml
中选择“python manage.py migrate
:在容器 上下文中对运行的命令
web
”服务
也可以运行bash
作为命令。这将在容器内为您提供交互式提示。