[장고] 양식 입력 화면에서 메시지 표시

4544 단어 Bootstrap장고

표시되는 메시지의 이미지



※bootstrap을 사용하고 있는 것이 전제입니다.



설정할 위치


  • views.py
  • settings.py
  • html

  • 비에ws. py


  • FormView 클래스를 상속하고 form_valid 메서드를 재정의
  • messages.success(self.request, '메시지를 보냈습니다.')에서 성공 시 메시지 설정
  • 
    class InquiryView(FormView):
        template_name = "inquiry.html"
        form_class = InquiryForm
        # success_urlは指定されたurlにリダイレクト(バリエーションに問題がなければ)
        # reverse_lazyでurlを逆引きできる。ハードコーディングは避ける。reverse関数の遅延評価版。
        success_url = reverse_lazy('app_name:inquiry')  # <urls.pyのapp_name>:<ルーティングにつけたname>
    
        def form_valid(self, form):
            """
            FormViewのメソッドをOverride
            Validationに問題がなければ実行される
            formオブジェクトにユーザの入力値が格納されている
            """
            messages.success(self.request, 'メッセージを送信しました。')
    
            return super().form_valid(form)
    
    

    눈가리개 g. py


  • {{message.tags}}는 레벨에 맞는 메시지를 반영합니다
  • Bootstrap 지원
  • 
    MESSAGE_TAGS = {
        messages.ERROR: 'alert alert-danger',
        messages.WARNING: 'alert alert-warning',
        messages.SUCCESS: 'alert alert-success',
        messages.INFO: 'alert alert-info'
    }
    

    html


    
        {% if messages %}
        <div class="container">
            <div class="row">
                <div class="my-div-style w-100">
                    <ul class="messages" style="list-style: none;">
                        {% for message in messages %}
                        <li {% if message.tags %} class="{{ message.tags }}">
                            {% endif %}
                            {{ message }}
                        </li>
                        {% endfor %}
                    </ul>
                </div>
            </div>
        </div>
        {% endif %}
    

    좋은 웹페이지 즐겨찾기