python - Docker Compose 和 Django 生成器语法错误

标签 python django docker

我是 Docker 的新手,一直在尝试使用 Docker 设置 Django。我一直在按照说明进行操作 here但我遇到了下面的错误。

  File "/usr/local/lib/python3.7/site- 
  packages/django/contrib/admin/widgets.py", line 152
  web_1  |     '%s=%s' % (k, v) for k, v in params.items(),
  web_1  |     ^
  web_1  | SyntaxError: Generator expression must be parenthesized

我的Django版本是2.1,Python 3.7。据我所知,这不应该发生,但它确实发生了。我检查了有问题的文件,它写得正确。这是一个已实现的修复程序,过去应该使用最新版本的 Python 修复此错误。

编辑 在此处添加 Docker 文件:

 FROM python:3
 ENV PYTHONUNBUFFERED 1
 RUN mkdir /code
 WORKDIR /code
 ADD requirements.txt /code/
 RUN pip install -r requirements.txt
 ADD . /code/

docker-compose.yml 文件:

version: '3'

services:
  db:
    image: postgres
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

来自 widgets.py:

if params:
            related_url += '?' + '&'.join('%s=%s' % (k, v) for k, v in params.items())

这是 widgets.py 的完整定义形式:

def get_context(self, name, value, attrs):
    context = super().get_context(name, value, attrs)
    rel_to = self.rel.model
    if rel_to in self.admin_site._registry:
        # The related object is registered with the same AdminSite
        related_url = reverse(
            'admin:%s_%s_changelist' % (
                rel_to._meta.app_label,
                rel_to._meta.model_name,
            ),
            current_app=self.admin_site.name,
        )

        params = self.url_parameters()
        if params:
            related_url += '?' + '&'.join('%s=%s' % (k, v) for k, v in params.items())
        context['related_url'] = mark_safe(related_url)
        context['link_title'] = _('Lookup')
        # The JavaScript code looks for this class.
        context['widget']['attrs'].setdefault('class', 'vForeignKeyRawIdAdminField')
    if context['widget']['value']:
        context['link_label'], context['link_url'] = self.label_and_url_for_value(value)
    return context

但是,我在尝试组合时仍然收到相同的错误代码。

此时我不知道该做什么;我完全不知所措。这是我第一次遇到这个问题。

最佳答案

首先

Your Django version is not compatible with Python 3.7

所以做出这些改变

在你的 Dockerfile 中

FROM python:3.6 

使用 sudo service docker restart 重启 docker

然后 sudo docker-compose up --build

或者 sudo docker-compose run web python manage.py migratesudo docker-compose up --build

关于python - Docker Compose 和 Django 生成器语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51959890/

相关文章:

python - Django S3 Direct 上的 CORS 错误

python - 带有单个参数的 Django NoReverseMatch

mongodb - mongo-express 不是以 docker-compose 文件开头

docker - 如何删除旧的和未使用的 Docker 镜像

python - 无法获取内置类型

python - 将日期代码添加到 matplotlib/python 图表

Python,读取很多文件并合并结果

具有 HTTP header 受控顺序的 Python HTTP 请求

python - 使用 MySQL 的 Django Web 框架从请求对象获取数据

docker - 错误 standard_init_linux.go :178 while starting the docker image