2011-06-27 11 views
4

私の使用例は非常に基本的ですが、ウェブ上で何も見つかりませんでした!Django:フォームラベルにURLリンクを含めるには

アイデアは クラシック...「私は読み、契約条件に同意します」 そして、このような諸条件のページを指して「契約条件」のリンクのチェックボックスを持つフォームです! urls.py

の私のURLパターンの1つの名前は「使用する用語」

tos = forms.BooleanField(widget=forms.CheckboxInput(), 
         label=_(u'I have read and agree to the <a href="%s" target="_blank">terms and conditions</a>' % reverse('terms_of_use')), 
         initial=False) 

しかし、私はエラーを取得する:次のように

は、だから、私は、フォームのフィールドを持っています:私はこの問題は、フォームがレンダリングされるときのURLconfがまだ読み込まれていないということであったと推測して

ImproperlyConfigured: The included urlconf urls doesn't have any patterns in it 

私のURLconfは、サイト全体で正常に動作しますか?

逆の代わりにlazy_reverse = lazy(reverse、str)を使ってみましたが、何も解決しませんでした。

これを行う方法はありますか?ユースケースは非常に基本的なようですので、テンプレート内でフォームを分割する必要はありません。

+0

推測を参照してください: 'reverse'は' current_app' kwargを持っているし、多分それはロードする 'urls.py'に少し方向性を必要とします。 – Bjorn

+0

エラーメッセージは次の場所からトレースされます。raise ImproperlyConfigured( "含まれているurlconf%sにはパターンはありません"%self.urlconf_name)これは彼が知っていることを示していますか? – sampac

答えて

3

"...%s..." % lazy(blah)の表記を使用して、あなたが回っていて、それを2回目に怒らせるので、lazy_reverseは機能しません。

私はすなわち

label = lazy(lambda: _("bla %s bla" % reverse('something'))) 

、あなたが怠惰な全体のことを試みることができると仮定が、私はちょうどすなわち

self.fields['myfield'].label = 'blah %s bla' % reverse('bla') 
+0

Klaas、私はあなたが提案したものの周りに多くの構文を試みましたが、 "at 0xa6b917c>"のようなものが表示されました。だから私はそれがうまく動作する__init__に入れました。 – sampac

0

__init__でラベルをオーバーライドし、代わりにこの

をテストしていません次のようなフォームラベルにリンクを付けることができます:

foo_filter=forms.ModelChoiceField(FooFilter.objects.all(), 
       label=format_html('<a href="{}">{}</a>', reverse_lazy('foo-filter'), 
           FooFilter._meta.verbose_name)) 

AppRegistryNotReady: lazy format_html()?

関連する問題