将POST请求发送到docker内的服务器

时间:2017-08-09 22:41:51

标签: python django

我正在尝试在django上创建一个web服务器应用程序,它在与celery一起在docker容器内运行。 这是我的docker-compose.yml:

    version: '2'
services:
  app:
    restart: always
    build: .
    volumes:
      - .:/myapp
      - /etc/myapp:/etc/myapp
      - /opt/myapp/static:/myapp/collected_static
      - /opt/myapp/media:/myapp/media
      - /opt/myapp/datasets:/myapp/datasets
    ports:
      - "8080:8080"
    links:
      - db
      - redis
    command: ./deploy/docker_entry.sh
    environment:
      - PYTHONUNBUFFERED=0
    tty: true
  db:
    restart: always
    image: postgres:latest
    environment:
      POSTGRES_USER: myapp
      POSTGRES_PASSWORD: myapp
      POSTGRES_DB: myapp
    volumes_from:
      - data
    ports:
      - "5432"
  data:
    image: busybox:latest
    volumes:
      - /var/lib/postgres
    command: "true"
  redis:
    image: redis:latest
    hostname: redis
  worker:
    build:
      context: .
      dockerfile: Dockerfile
    command: ./deploy/run_celery.sh
    volumes:
      - .:/myapp
      - .:/app
      - /etc/myapp:/etc/myapp
      - /opt/myapp/media:/myapp/media
    links:
      - db
      - redis

我的Dockerfile:         来自python:3.6

    RUN pip3 install -U pip setuptools
    RUN pip3 install uwsgi

    ADD . /myapp

    ENV DJANGO_SETTINGS_MODULE app.settings

    # Install R for rpy2
    RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
    RUN apt-get update
    RUN apt-get install -y r-base

    RUN pip3 install -r /pandora/requirements.txt

    EXPOSE 8080
    EXPOSE 8000
    EXPOSE 80

    WORKDIR /myapp

问题是,我无法从ReactJS的前端发送POST请求。考虑以下功能:

            $.ajax({
        method: 'POST',
        url: '/myapp/upload_user_sample/',
        data: data,
        processData: false,
        contentType: 'multipart/form-data',                    
        success: function (response) {
            console.log(response);
        }
    })

发送请求时,服务器无法在views.py中看到它。 如果您将“POST”更改为“GET”,则可以在views.py中获取此请求,但您无法获取数据。我该怎么办呢? views.py:

   @login_required
   def upload_user_sample(request):
        log.debug("{}".format(request.method))
        if request.method == 'POST':
            user = User.objects.get(id=request.user.id)
            sample = UserSample()
            sample.user = user

0 个答案:

没有答案
相关问题