【问题标题】:Django - Modify a generic detail view to manage a form and post data - DjangoDjango - 修改通用详细视图以管理表单和发布数据 - Django
【发布时间】:2020-08-31 08:23:27
【问题描述】:

我是 django 的新手。

我想创建一个网页,显示有关特定对象的信息,并有一个表单来发送有关该对象的消息。

一开始,我使用详细视图来显示有关对象的信息。 然后根据我的消息类创建了一个消息表单

我使用 get_context_data 在模板的上下文中传递表单。

我想知道是否有办法在同一个视图中管理表单的验证,还是应该回到函数视图?

我已经看到 FormMixin 可以提供帮助。 你能告诉我这是否是正确的解决方案。

感谢您的帮助

我的看法:

class LoanDetailView(DetailView):

    model = Loan

    def get_context_data (self, **kwargs):
        context = super(LoanDetailView, self).get_context_data(**kwargs)
        msg_form = MessageForm()
        context['msg_form'] = msg_form

        return context

在我的模板中:

        <form method="POST"> 
            {%csrf_token%}
            <fieldset class="form-group">
                {{ msg_form | crispy  }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit"> Envoyer </button>
            </div>
      </form>

【问题讨论】:

    标签: django django-forms django-generic-views


    【解决方案1】:

    你可以使用这个模式

    class LoanDetailView(DetailView):
        def get_context_data(self, **kwargs):
            [...]
    
        def post(self, request, *args, **kwargs):
            form = MessageForm(request.POST)
            if form.is_valid():
                [...]  # logic similiar as in function based view
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 2021-06-04
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多