私は現在、かなり大きなデータベースにまたがるCRUDアプリケーションに取り組んでおり、ベストプラクティスを使用してそれについて説明したいと思います。Flask CRUDビューに関するベストプラクティス
私はFlask Viewを設計するとき、現在、すべての機能をこのように1つのビューに入れています。あなたは(関係、selectfield選択肢生成、マルチテナントのコントロールなど)考慮し、すべてのDB機能を取るときに、このビューはかなり大きくなる可能性が想像できるように
@userBlueprint.route('/<string:lang>/user', methods=['GET'])
@userBlueprint.route('/<string:lang>/user/<string:function>', methods=['GET', 'POST'])
@userBlueprint.route('/<string:lang>/user/<string:function>/<int:id>', methods=['GET', 'POST'])
def userView(lang=None, id=None, function=None):
if function == None:
pass
elif function == 'delete':
pass
else:
if function == 'update':
pass
elif function == 'new':
pass
。
この同じタスクを実行する別の方法は、このように5つのビューを作成することです。
@userBlueprint.route('/<string:lang>/user', methods=['GET'])
def getUsers(lang=None):
pass
@userBlueprint.route('/<string:lang>/user', methods=['POST'])
def newUsers(lang=None):
pass
@userBlueprint.route('/<string:lang>/user/<int:id>', methods=['GET'])
def getUser(lang=None, id=None):
pass
@userBlueprint.route('/<string:lang>/user/<int:id>', methods=['POST'])
def deleteUser(lang=None, id=None):
pass
@userBlueprint.route('/<string:lang>/user/<int:id>', methods=['POST'])
def modifyUser(lang=None, id=None):
pass
もちろん、ここでの欠点は、繰り返しコードをたくさん入れなければならないことです。
いずれの方法も「ベストプラクティス」と考えられていますか?そうでない場合は、3番目のオプションはありますか?