1

所以,我有一个基于 的 Django 视图,django.views.generic.View它只接受POST请求。它以某种application/x-www-form-urlencoded格式接受基本调用,解析它们,然后根据需要做出响应。我意识到这在瘦控制器、胖模型的想法上失败了,但我不确定放置以下逻辑的最佳位置,因为它与视图相关,而不是专门与底层模型相关。

目前,视图处理一些逻辑来创建新的订阅:

class ExampleView(View):

   def post(self, request, *args, **kwargs):
        mode = request.POST.get('mode')

        if not mode:
            return HttpResponse('mode required', status=400)

        if mode == 'subscribe':
            if not request.POST.get('topic'):
                return HttpResponse('topic required', status=400)

            if not [ another required argument ]:
                and so on ...

            [ If we're ready to roll, create a Subscription object ]

            return HttpResponse('Subscribed', status=200)

因此,在我看来,这就像将逻辑放在错误的层中。哪里是处理传递给视图的最佳位置,以及生成/失败生成订阅对象的最佳位置。

是否应该在 Subscription 对象上处理提供的数据,然后将 HttpResponses 返回给视图?还是应该只返回状态和消息,然后由创建正确 HttpResponse 对象的视图转发给用户?

4

1 回答 1

0

处理传递给视图的内容以及生成/失败生成订阅对象的最佳位置

是观点,我想。因此,您提供的代码片段在我看来是绝对正确的。

数据验证逻辑的某些部分可以封装在表单中:

    if form.is_valid():
        [ we're ready to roll, create a Subscription object ]
    else:
        return HttpResponse('%...' % form.errors, status=400)
于 2013-04-29T18:42:06.450 回答