Skip to main content
 首页 » 编程设计

python之使用 cookiecutter-django 设置项目时无法运行迁移

2024年10月24日30sky-heaven

我一直在尝试使用 cookiecutter-django 在本地建立一个新的 django 项目。我已按照文档进行操作,但在尝试运行 python manage.py migrate 时,我总是遇到错误。

错误回溯。

Traceback (most recent call last): 
File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-  packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
utility.execute() 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-packages/django/core/management/__init__.py", line 302, in execute 
settings.INSTALLED_APPS 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 55, in __getattr__ 
self._setup(name) 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 43, in _setup 
self._wrapped = Settings(settings_module) 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 99, in __init__ 
mod = importlib.import_module(self.SETTINGS_MODULE) 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/importlib/__init__.py", line 109, in import_module 
return _bootstrap._gcd_import(name[level:], package, level) 
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
File "<frozen importlib._bootstrap>", line 1129, in _exec 
File "<frozen importlib._bootstrap>", line 1471, in exec_module 
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed 
File "/home/ubuntu/lasbrisas_project/django_condominios/config/settings/local.py", line 11, in <module> 
from .common import *  # noqa 
File "/home/ubuntu/lasbrisas_project/django_condominios/config/settings/common.py", line 102, in <module> 
'default': env.db('DATABASE_URL', default='postgres:///django_condominios'), 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-packages/environ/environ.py", line 180, in db_url 
return self.db_url_config(self.get_value(var, default=default), engine=engine) 
File "/home/ubuntu/lasbrisas_project/venv/lib/python3.4/site-packages/environ/environ.py", line 371, in db_url_config 
'PORT': _cast_int(url.port), 
File "/usr/lib/python3.4/urllib/parse.py", line 156, in port 
port = int(port, 10) 
ValueError: invalid literal for int() with base 10: 'jd#uhUhey385' 

我真的不知道我在设置项目时做错了什么,如果你检查我采取的步骤并帮助我找出缺失的地方,我将不胜感激。

使用 cookiecutter-django 设置项目的步骤:

pip、virtualenv、PostrgreSQL 已经安装

  1. pip 安装 cookiecutter
  2. cookiecutter https://github.com/pydanny/cookiecutter-django
  3. 回答千篇一律的问题
  4. 创建虚拟环境 - virtualenv -p/usr/bin/python3 venv
  5. 激活 virtualenv - source venv/bin/activate/
  6. cd 进入项目文件夹
  7. 文档说 sudo ./install_os_dependencies.sh install 但 ./install_os_dependencies.sh 不在 projectroot 中,文件在 utility/中找到
    • cd 工具
    • sudo ./install_os_dependencies.sh 安装
  8. pip install -r requirements/local.txt
  9. 在 postgresql 中设置数据库:
    • sudo su - postgres
    • psql
    • 创建数据库 myproject;
    • 使用密码 'password' 创建用户 myprojectuser;
    • 将数据库 myproject 上的所有权限授予 myprojectuser;
    • \q
  10. 返回tu项目根目录
  11. mv env.example .env
  12. export DATABASE_URL=postgres://myprojectuser:myprojectuserdbpassword@127.0.0.1:5432/myproject
  13. python manage.py 迁移

在那之后,当我得到回溯时,可能出了什么问题?文档没有显示更多信息,迁移应该有效。

请您参考如下方法:

Cookiecutter 使用项目名称的 slug 作为您要使用的开发数据库的名称。您应该自己创建数据库。

从你的堆栈跟踪中,这是给你 settings.py 文件中的问题的行:

File "/home/ubuntu/lasbrisas_project/django_condominios/config/settings/common.py", line 102, in <module>'default': env.db('DATABASE_URL',     default='postgres:///django_condominios'), 

它希望找到名为 django_condominios 的数据库。

你可以通过运行来解决这个问题

createdb django_condominios 

您应该可以很好地运行迁移。