Django: как включить URL-ссылку в метку формы - PullRequest
4 голосов
/ 27 июня 2011

Мой пример использования выглядит очень просто, но я не смог найти ничего в Интернете!

Идея представляет собой форму с флажком «Я прочитал и согласен с условиями» И ссылка на «условия», которая указывает на страницу с такими условиями ... Классический!

Итак, у меня есть поле в моей форме:

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)

где 'условия использования' - это название одного из моих шаблонов URL в urls.py

Но я получаю ошибку:

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

Мой urlconf отлично работает на всем сайте, поэтому я предположил, что проблема заключалась в том, что urlconf еще не заполняется при визуализации формы?

Я пытался использовать lazy_reverse = lazy (reverse, str) вместо reverse, но это ничего не решает.

Есть ли способ заставить эту работу? Вариант использования кажется очень простым, поэтому, безусловно, есть способ сделать это без необходимости разбивать форму внутри моего шаблона?!

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

lazy_reverse не будет работать, так как вы поворачиваетесь и отпускаете его второй раз после записи "...%s..." % lazy(blah).

Полагаю, вы можете попытаться отложить все целиком, то есть

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

но я не проверял это

в качестве альтернативы, просто переопределите метку на __init__, то есть

self.fields['myfield'].label = 'blah %s bla' % reverse('bla')
1 голос
/ 13 апреля 2016

Вы можете предоставить ссылку на метку формы следующим образом:

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 ()?

...