如何在表单字段的标签中添加链接

lun*_*ain 15 django

我希望有一个条款和条件的复选框,其标签应包含指向页面的链接,以及条款和条件.

以下字段将包含标签转义的标签.

BooleanField(label="I agree to <a href='terms-conditions.html'>terms&conditions</a>")
Run Code Online (Sandbox Code Playgroud)

ken*_*ken 30

从utils.safestring导入django的mark_safe,如http://www.kelvinism.com/howtos/using-html-django-form-label/所述.

从链接:

from django.utils.safestring import mark_safe
from django import forms

class AccountForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(), 
                           max_length=15, 
                           label=mark_safe('Your Name (<a href="/questions/whyname/" target="_blank">why</a>?)'))
Run Code Online (Sandbox Code Playgroud)

  • 如果不是硬编码你想要使用`reverse`的URL,那么就不能在字段定义中使用它.在调用`super`之后,必须在Form构造函数内设置标签值. (2认同)
  • 或者使用适用于这种情况的reverse_lazy! (2认同)

aig*_*ius 11

这是关于表单迭代主题的Django文档的正确链接.

你想要的是:

<form method="post">
{% for field in form %}
    <p>
        {{ field.errors }}
        {{ field.label_tag }}: {{ field }}
        {% if field.name == "toc" %}
          <a href="{% url terms %}">Terms and Conditions</a>
        {% endif %}
    </p>
{% endfor %}
<p><input type="submit" value="Send message" /></p>
</form>
Run Code Online (Sandbox Code Playgroud)


mrk*_*kre 7

如果不想对URL进行硬编码,可以从构造函数中设置字段的标签:

from django import forms
from django.core.urlresolvers import reverse_lazy
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _


class ExampleForm(forms.Form):
    name = forms.CharField(max_length='255', label=_('Name'))
    forms.BooleanField(label=_("Terms and Conditions"), required=False)

    def __init__(self, **kwargs):
        super(ExampleForm, self).__init__(**kwargs)
        terms_and_conditions = reverse_lazy("terms_and_conditions")
        self.fields['read_terms'].label = mark_safe(_("I have read and agree with the "
                                                      "<a href='%s'>Terms and Conditions</a>")) % (terms_and_conditions)
Run Code Online (Sandbox Code Playgroud)


scu*_*ffe 5

我不确定 django 是如何工作的,但是如果上面代码中的标签创建了一个:

<label>I agree to terms&conditions</label>
Run Code Online (Sandbox Code Playgroud)

element 那么这不是这样做的方法。

默认情况下,标签元素固有地选择关联的字段,因此您将混合 2 个单击操作(一个检查,另一个打开窗口)

我只想添加您的标签,并在其旁边添加一个 a:href。

<label>I agree to terms&conditions</label> (<a href="terms-conditions.html">terms&conditions</a>)
Run Code Online (Sandbox Code Playgroud)