検証ステップのように機能する再利用可能なメソッドを使用して、クラス ベースのビューを構築する方法に苦労しています。実際のエラーを発生させたくありませんが、json メッセージを返します (成功と失敗の両方で)
class View(object):
ERRORS = (
('error_1', 'Enter an integer'),
('error_2', 'Enter a valid integer'),
('error_3', 'Enter a positive integer'),
)
def get_number(request):
number = request.GET.get('number', None)
return number
else:
return 'error_1', ERRORS.get('error_1')
def validate_number(number):
try:
number = int(number)
except (TypeError, ValueError):
return 'error_2', ERRORS.get('error_2')
if number > 0:
return number
else:
return 'error_3', ERRORS.get('error_3')
def get(request, *args, **kwargs):
# pseudo code should run reusable method checks
# then return {'number':number} or {'error_1', 'msg'}
def post(request, *args, **kwargs):
# pseudo code should run reusable method checks
# then return {'number':number} or {'error_1', 'msg'}
問題は、検証手順から「脱却」する方法です。検証メソッドから JsonResponse を返そうとしましたが、実際にエラーになる応答を返す前に get メソッドまたは post メソッドを続行します。クラス エラーとメッセージを設定できますが、それは get メソッドまたは post メソッドで多くの if/else チェックを行うことを意味します。
私は基本的に、1 つまたは 2 つの戻り値を持つ可能性のある検証メソッドを実行できるクラス アーキテクチャを探しています。独自のエラー ハンドラを作成する必要があるかもしれませんが、明確な例がありません。