我正在尝试在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