全部。我使用 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) 我使用 Django-rest-framework 编写投票应用程序项目。它有两种模型:问题和嵌套答案。我想根据请求更新有问题的序列化器的答案,例如:
{
"question":"question",
"answers": [{"answer":"first updated answer"}, {"answer":"second update answer"}]
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能正确地做到这一点?我尝试这样做,但我删除了每个请求中的答案并创建新的答案,因为每次都会更改它们的 id。
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)
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 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) 全部。我使用 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) django ×2
flask ×2
python ×2
python-3.x ×2
django-cache ×1
docker ×1
marshmallow ×1
redis ×1
sqlalchemy ×1
swagger ×1