我正在运行一个内部有 Django 的 Docker 容器。
这是我的 dev.yml 文件:
version: '2'
volumes:
postgres_data_dev: {}
postgres_backup_dev: {}
services:
postgres:
build: ./compose/postgres
volumes:
- postgres_data_dev:/var/lib/postgresql/data
- postgres_backup_dev:/backups
environment:
- POSTGRES_USER=sorbetcitron
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
command: python ./manage.py runserver_plus 0.0.0.0:8000
depends_on:
- postgres
environment:
- POSTGRES_USER=sorbetcitron
- USE_DOCKER=yes
- DJANGO_DEBUG=True
- DATABASE_URL=postgres://django:django@localhost:5432/sorbetcitron
volumes:
- .:/app
ports:
- "8000:8000"
links:
- postgres
pycharm:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
depends_on:
- postgres
environment:
- POSTGRES_USER=sorbetcitron
volumes:
- .:/app
links:
- postgres
Run Code Online (Sandbox Code Playgroud)
然后我用以下命令启动我的容器:
docker-compose -f …Run Code Online (Sandbox Code Playgroud) 我的docker-compose.yml是:
version: '2'
volumes:
postgres_data: {}
postgres_backup: {}
services:
postgres:
build: ./compose/postgres
volumes:
- postgres_data:/var/lib/postgresql/data
- postgres_backup:/backups
env_file: .env
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile
user: django
depends_on:
- postgres
- redis
command: /gunicorn.sh
env_file: .env
nginx:
build: ./compose/nginx
depends_on:
- django
ports:
- "0.0.0.0:80:80"
redis:
image: redis:latest
restart: always
Run Code Online (Sandbox Code Playgroud)
在我的.env文件中,我有:
# PostgreSQL
POSTGRES_PASSWORD=mysecretpass
POSTGRES_USER=postgresuser
Run Code Online (Sandbox Code Playgroud)
如何测试是否有效设置了环境变量?
我试过在远程计算机上运行tu:
docker run sorbetcitron_django echo $POSTGRES_USER
Run Code Online (Sandbox Code Playgroud)
其中sorbetcitron_django是我的django映像,但不输出任何内容。
我想在使用DRF发送回JSON响应之前执行一些数据操作。
我的模型是:
class ThirdParty(models.Model):
label = models.CharField(verbose_name=_("Third party label"), null=False, blank=False, default=DEFAUT_LABEL, max_length=255)
class CashFlow(TimeStampedModel):
date = models.DateField(verbose_name=_("Due date"), null=True, blank=True)
forecasted_value = models.DecimalField(verbose_name=_("Forecasted value"), null=True, blank=True, max_digits=11, decimal_places=2)
third_party = models.ForeignKey(ThirdParty, null=False, blank=False, related_name='cashflows')
Run Code Online (Sandbox Code Playgroud)
目前,我有两个序列化器:
class CashFlowSerializer(serializers.ModelSerializer):
third_party = serializers.PrimaryKeyRelatedField(many=False, read_only=True, allow_null=True)
class Meta:
model = CashFlow
fields = ('id', 'date', 'forecasted_value', 'edited_value', 'third_party')
class ThirdPartyReadSerializer(serializers.ModelSerializer):
cashflows = CashFlowSerializer(many=True, read_only=True)
class Meta:
model = ThirdParty
fields = ('id', 'label', 'category', 'cashflows',)
Run Code Online (Sandbox Code Playgroud)
而且我的ThirdParty视图正确地返回了一个不错的JSON作为:
{
"id": 15,
"label": "Adeo",
"category": …Run Code Online (Sandbox Code Playgroud) 在 Lua 程序中,使用 modeMCU,我的 HTTP POST 请求出现问题。
我针对httpbin.org/post.
我想发送json数据,所以我的要求是:
POST /post HTTP/1.1
Host: httpbin.org
Connection: close
Accept: */*
User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)
Content-Type: application/json
{...some JSON here}
Run Code Online (Sandbox Code Playgroud)
回应是:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 07 Sep 2015 10:39:12 GMT
Content-Type: application/json
Content-Length: 332
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "Mozilla/4.0 (compatible; esp8266 Lua; Windows NT …Run Code Online (Sandbox Code Playgroud)