小编Ole*_*kyi的帖子

FlaskApp 没有属性“配置”

全部。我使用 Flask、SQLAlchemy 和 connexion 编写项目。在实现 connexion 之前,所有工作都成功(ps 当应用程序创建为 时app = Flask(__name__)。实现 connexion 后引发异常: 'SQLALCHEMY_DATABASE_URI' not in app.config and AttributeError: 'FlaskApp' object has no attribute 'config'。那么错误在哪里?请帮助。

运行.py:

from app import create_app
app = create_app('development')
if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

应用程序:

...
from settings import app_config
db = SQLAlchemy()
def create_app(config_name):
    # app = Flask(__name__)
    app = connexion.App(__name__)
    app.add_api('swagger.yml')
    application = app.app
    application.config.from_object(app_config[config_name])
    application.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(app)
    return app
Run Code Online (Sandbox Code Playgroud)

设置.py

class BaseConfig(object):
    DEBUG = False
    CSRF_ENABLED = True
    SECRET …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy swagger

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

DRF序列化器更新嵌套对象列表

我使用 Django-rest-framework 编写投票应用程序项目。它有两种模型:问题和嵌套答案。我想根据请求更新有问题的序列化器的答案,例如:

{
    "question":"question",
    "answers": [{"answer":"first updated answer"}, {"answer":"second update answer"}]
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确地做到这一点?我尝试这样做,但我删除了每个请求中的答案并创建新的答案,因为每次都会更改它们的 id。

序列化器.py

class QuestionSerializer(serializers.ModelSerializer):
    user = serializers.StringRelatedField()
    answers = AnswerSerializer(many=True)

    class Meta(object):
        model = Question
        fields = ('id', 'question', 'answers', 'total_votes', 'user')
        read_only_fields = ('id', 'total_votes', )

    def update(self, instance, validated_data):
        instance.question = validated_data.get('question', instance.question)
        instance.save()

        question = Question.objects.get(id=instance.id)
        Answer.objects.filter(question=question).delete()

        answers_data = validated_data.pop('answers')
        for answer_data in answers_data:
            Answer.objects.create(question=question, **answer_data)

        return instance
Run Code Online (Sandbox Code Playgroud)

模型.py

class Question(models.Model):
    question = models.CharField(verbose_name='Question', max_length=255)
    total_votes = models.IntegerField(verbose_name='Total Votes', default=0)
    user …
Run Code Online (Sandbox Code Playgroud)

django python-3.x django-serializer django-rest-framework

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

Docker Redis Django连接被拒绝

我正在使用Django REST Framework,Django,Postgres作为数据库和Redis作为缓存来编写项目.我想将我的项目停靠.但是Redis不想访问连接.Django设置:

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml:

services:

  postgres:
    image: postgres:latest
    env_file:
      - ./src/main/.env
    volumes:
      - ./scripts/postgres:/docker-entrypoint-initdb.d

  polls:
    build: .
    volumes:
      - .:/code
    env_file:
      - ./src/main/.env
    ports:
      - "8000:8000"
    depends_on:
      - postgres
      - redis
    command: ./scripts/wait_for_it.sh

  redis:
    restart: always
    image: redis:3.2.0
    expose:
      - "6379"
Run Code Online (Sandbox Code Playgroud)

当我向容器运行命令时,会出现以下警告:

polls_cache | 1:M 15 Aug 10:47:36.719 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to …
Run Code Online (Sandbox Code Playgroud)

django django-cache redis docker docker-compose

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

棉花糖@validates 不会引发错误

全部。我使用 Flask 作为主要框架和用于序列化 JSON 数据的 Marshmallow 包编写 API 项目。我想创建玩家实例,但在创建之前验证他的昵称。看法:

def create_player()
    ...
    try:
        data = player_schema.load(request_data)
        # when error raised excect case does not handle it
        # but data has 2 dicts: 
        # UnmarshalResult(data={}, errors={'nickname': ['Error!!!']})
    except ValidationError as err:
       return jsonify(err.messages), 400
    ...
Run Code Online (Sandbox Code Playgroud)

架构:

class PlayerSchema(Schema):

    nickname = fields.Str(required=True)
...

    @validates('nickname')
    def validate_nickname(self, value):
        raise ValidationError('Error!!!')
Run Code Online (Sandbox Code Playgroud)

python flask python-3.x marshmallow

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