2017-04-24 11 views
0

私たちのDjangoプロジェクトにthisスニペットを統合しようとしている:Djangoメッセージに追加データを追加するにはどうしたらいいですか?

それはちょうどカスタムHTMLおよびメッセージ用CSSです。

htmlは次のようになります。

<div class="bs-calltoaction bs-calltoaction-success"> 
    <div class="row"> 
     <div class="col-md-9 cta-contents"> 
      <h1 class="cta-title">Its a Call To Action</h1> 
      <div class="cta-desc"> 
       <p>Describe the action here.</p> 
       <p>Describe the action here.</p> 
       <p>Describe the action here.</p> 
      </div> 
     </div> 
     <div class="col-md-3 cta-button"> 
      <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a> 
     </div> 
    </div> 
</div> 

私はメッセージフレームワークと統合したいのであれば、私が行うことができます。

{% for message in messages %} 
    <div class="bs-calltoaction bs-calltoaction-{{ message.tags }}"> 
     <div class="row"> 
      <div class="col-md-9 cta-contents"> 
       {{ message }} 
      </div> 
      <div class="col-md-3 cta-button"> 
       <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a> 
      </div> 
     </div> 
    </div> 
{% endfor %} 

しかし、私は、ヘッダー<h1>とのリストを指定したいですサブメッセージ<p> だから私は{'title':'This is a title','submessages':[1,2,3]}のような追加の属性を保持できる辞書のようなメッセージに追加する必要があります:

{% for message in messages %} 
    <div class="bs-calltoaction bs-calltoaction-{{ message.tags }}"> 
     <div class="row"> 
      <div class="col-md-9 cta-contents"> 
       <h1 class="cta-title">{{ message.title }}</h1> 
       <div class="cta-desc"> 
        <p>{{ message.submessages.0 }}</p> 
        <p>{{ message.submessages.1 }}</p> 
       </div> 
      </div> 
      <div class="col-md-3 cta-button"> 
       <a href="#" class="btn btn-lg btn-block btn-default">Go for It!</a> 
      </div> 
     </div> 
    </div> 
{% endfor %} 

Djangoメッセージは使用できますか?あるいは、別のアプローチを提案しますか?このような変数をコンテキストに渡すことはできますが、可能な場合はメッセージを使用したいと考えています。

答えて

4

extra_tagsメッセージ属性を使用すると、一定の自由度を得ることができます。

例えば、あなたが行動をさまざまな呼び出しのための異なるextra_tagsを持っている可能性がhttps://docs.djangoproject.com/en/1.11/ref/contrib/messages/#adding-extra-message-tags

を参照してください。

# views.py 
messages.success(request, 'You have signed up', extra_tags='suggest_upgrade') 

か:その後、

messages.success(request, 'You have signed up', extra_tags='suggest_share') 

と:

messages.success(request, 'Main message here', extra_tags='submessage here') 
:それはおそらく、その目的のために設計されていないが、あなたも、タグ自体としてサブメッセージを渡すことができ

{% for message in messages %} 

    {% if 'suggest_upgrade' in message.extra_tags %} 
     <h1>Get these extra features</h1> 
     <p>info here</p> 
    {% elif 'suggest_share' in message.extra_tags %} 
     <h1>Share with friends</h1> 
     <p>other info here</p> 
    {% endif %} 

{% endfor %} 

、次に:

{% for message in messages %} 

    <h1>{{ message }}</h1> 
    <p>{{ message.extra_tags }}</p> 

{% endfor %} 
関連する問題