簡體   English   中英

Django 如何在基於 class 的視圖中傳遞自定義錯誤消息

[英]Django how to pass custom error message in class based views

我需要顯示無效 forms 的自定義錯誤消息。 我不知道如何在基於 class 的視圖中做到這一點。 這是我基於 class 的視圖:

class EditPatient(UpdateView):
      model = Patient
      form_class = PatientUpdateFrom
      template_name = 'hospital/edit-patient.html'
      def form_valid(self, form):
        error_message = None
        if form.is_valid():
           name = self.request.POST["patient_name"]
           email = self.request.POST["phone"]
           if len(name) > 20:
               error_message = 'maximum 20 character allowed in name'
           if len(phone) > 20:
               error_message = 'maximum 15 character allowed in phone'
          
           """ #I tried this but didn't work 
           def get_context_data(self, **kwargs):
                context = super(EditPatient,self).get_context_data(**kwargs)
                context['error_message'] = error_message
                return context
           """
          
           if not error_message:
                messages.add_message(self.request, messages.INFO, 'Patient Sucessfully Updated')     
                form.save()
                 
           
           return redirect('hospital:edit-patient',self.object.slug)

I know I can do it in forms.py though raise forms.ValidationError but I want to know how to do it in class based views because I am updating few fields from another model.

您可以覆蓋UpdateView class 的form_invalid方法:

def form_invalid(self, form):
    context = self.get_context_data(form=form)
    context.update({"my_message": "Soemthign went wrong"})
    return self.render_to_response(context)

或者,您可以使用django-braces並使用以下 mixin: https://django-braces.readthedocs.io/en/latest/form.html#forminvalidmessagemixin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM