2017-12-28 27 views
-1

リンクとして存在していれば価値がありたいです。 場合によっては、値はNoneになります。場合によっては、ユーザーがクリックできるレコードがあります。 NoReverseMatchをテンプレート内のif文内のリンクに克服する方法はありますか?

は、だから私のテンプレートで、私はif文

{% if expense_row.noteextra.extra.id %} <a href="{% url 
'extra_notes_details' pk=expense_row.noteextra.extra.id %}" class="btn 
btn-info">{{ expense_row.noteextra}}</a> 
        {% else %} 
        {{ expense_row.noteextra}} 

       {% endif %} 

の内側にそれを置くしかし、if文にもかかわらず、私はまだエラーが出る

NoReverseMatch /費用/リスト/レンジで/

Reverse for 'extra_notes_details' with arguments '()' and keyword arguments '{u'pk': ''}' not found. 1 pattern(s) tried: ['unit/extra_notes_details/(?P<pk>\\d+)$'] 

これは、初期の段階でDjangoテンプレートがURL用に解析されていることを意味しますeとそれ は、これらの非運用URLがif文内にあるか、コメントアウトされているかどうか気にしません。-itはエラーをダンプします。

エラーを発生させずにこれらのリンクを構築するにはどうすればよいですか?モデルにメソッドを追加する

+0

あなたのテンプレートはエラーの「extra_notes_details」と一致しない 'unit_notes_details'を使います。エラーは他のどこかから来ています。 – Alasdair

+0

ええ、私は私の質問に別のサンプルを使用しました。修正しました。 –

+0

前の答えは私の問題を解決しましたが、何らかの理由で削除されました –

答えて

1

試してみてください。

def unit_url(self): 
    unit_id = getattr(self.noteunit.unit, 'id', None) 
    if unit_id: 
     return reverse('extra_notes_details', kwargs={'pk': unit_id}) 

とテンプレートでそれを使用します。

{% if expense_row.unit_url %} 
    {{ expense_row.unit_url }} 
{% else %} 
    {{ expense_row.noteunit}} 
{% endif %} 
1

{% url %}タグを使用すると、結果を変数に割り当てることができます。このは、URLの逆転に失敗した場合はエラーを発生させません。

{% url 'extra_notes_details' pk=expense_row.noteextra.extra.id as the_url %}" 

{% if the_url %} 
    <a href="{{ the_url }}" class="btn btn-info">{{ expense_row.noteextra}}</a> 
{% else %} 
    {{ expense_row.noteextra}} 
{% endif %} 
関連する問題