小编Aar*_*shi的帖子

'RUN pip install -r requirements.txt' 不起作用

我是 Docker 的新手,并尝试使用相同的方式部署 django 项目。但是在构建 docker-compose 之后,我收到了这个错误:

错误:无法打开需求文件:[Errno 2] 没有这样的文件或目录:'requirements.txt' 错误:服务 'web' 无法构建:命令 '/bin/sh -c pip install -r requirements.txt'返回非零代码:1

我可能在设置正确的路径时搞砸了,所以这是我的项目结构

~/Desktop/Projects/ToDoApp
   ToDoApp
     settings.py
   docker-compose.yml
   Dockerfile
   manage.py
   requirements.txt
Run Code Online (Sandbox Code Playgroud)

这是我的 dockerfile

#pull official base image
FROM python:3

#set envionment variables
ENV PYTHONUNBUFFERED 1

# Adding requirements file
ADD requirements.txt ToDoApp/ToDoApp

#set work directory
WORKDIR /ToDoApp

#install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD ["python", "./ToDoApp/manage.py runserver 0.0.0.0:8000"]
Run Code Online (Sandbox Code Playgroud)

这是我的 docker-compose.yml

version: '3'

services:
  web:
    build: .
    command: python …
Run Code Online (Sandbox Code Playgroud)

python docker dockerfile

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

如何在 django 测试用例中添加自定义标头?

我在 django Rest 框架中实现了一个自定义身份验证类,该类需要在标头中的用户注册时提供客户端 ID 和客户端密钥。我正在为用户注册编写测试用例,如下所示:-

User = get_user_model()
client = Client()


class TestUserRegister(TestCase):
    def setUp(self):
        # pass
        self.test_users = {
            'test_user': {
                'email': 'testuser@gmail.com',
                'password': 'Test@1234',
                'username': 'test',
                'company': 'test',
                'provider': 'email'
            }
        }

        response = client.post(
            reverse('user_register'),
            headers={
                "CLIENTID": <client id>,
                "CLIENTSECRET": <client secret>
            },
            data={
                'email': self.test_users['test_user']['email'],
                'username': self.test_users['test_user']['username'],
                'password': self.test_users['test_user']['password'],
                'company': self.test_users['test_user']['company'],
                'provider': self.test_users['test_user']['provider'],
            },
            content_type='application/json',
        )
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    def test_register(self):
        response = client.post(
            reverse('user_register'),
            headers={
                "CLIENTID": <client id>,
                "CLIENTSECRET": <client secret>
            },
            data={
                "first_name": "john", …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework django-tests

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

AttributeError: 这个 QueryDict 实例对于测试用例是不可变的

我正在尝试更改我的 request.data 字典以删除一些附加字段。它在视图中完全正常工作。但是当我运行相同的测试用例时,我收到此错误:

AttributeError: 这个 QueryDict 实例是不可变的

这是我的观点:

    def create(self, request, *args, **kwargs):

        context = {'view': self, 'request': request}

        addresses = request.data.pop("addresses", None)
        serializer = self.get_serializer(data=request.data, context=context)
        serializer.is_valid(raise_exception=True)
        response = super(WarehouseViewSet, self).create(request, *args, **kwargs)
        if addresses is None:
            pass
        else:
            serializer = self.get_serializer(data=request.data, context=context)
            serializer.is_valid(raise_exception=True)
            addresses = serializer.update_warehouse_address(request, addresses, response.data["id"])
            response.data["addresses"] = addresses
        return Response(data=response.data, status=status.HTTP_201_CREATED)
Run Code Online (Sandbox Code Playgroud)

这是我的相同视图的测试用例:

    def test_create_warehouse_authenticated(self):
        response = client.post(
            reverse('warehouse_list_create'),
            data={
                'name': self.test_warehouse['test_warehouse']['name'],
                'branch': self.test_warehouse['test_warehouse']['branch'],
            },
            **{'HTTP_AUTHORIZATION': 'Bearer {}'.format(
                self.test_users['test_user']['access_token']
            )},
        )

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
Run Code Online (Sandbox Code Playgroud)

如何修复此错误?

python django django-rest-framework django-tests

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