将变量值分配给模板中的表单域

时间:2015-05-19 12:37:57

标签: javascript python django forms django-templates

我希望将视图函数word中的变量one_label的值分配给模板中的表单字段label。我用javascript看过一些解决方案,但我不确定如何在模板中使用表单字段?

<script type="text/javascript"> 
   var myVar = "{{someDjangoVariable}}"
</script>

在模型中

class Labels(models.Model):
   label = models.CharField()

表格

class LabelForm(forms.Form):

 label = forms.CharField(required = False)
视图中的

def one_label(request, postID):
   one_label = Labels.objects.get(id=postID
   if request.method =='POST':
      form = LabelForm(request.POST)
      if form.is_valid():


         word = "something"
      else:
        form = LabelForm()
      c = {"form"=form, "one_label"=one_label, "word"=word  }
      c.update(csrf(request))
      render(response,'mytemplate.html', c)
模板中的

 <form action="" method="post">{% csrf_token %}

      {{ form.as_p}}

  # assign value in var "word" in views to form field "label"

 # something like    {{ form.label}}:{{ word}}

 </form>

1 个答案:

答案 0 :(得分:2)

首先,至少在views.py中存在语法错误,或者这是我完全不知道的语法。 Context是一个Python字典,可以声明为:

c = {'form': form, 'one_label': one_label, 'word': word}

我强烈建议您掌握一个好的IDE,它将非常有助于您使用语法。

关于表单呈现,我建议您通过将{{ form }}替换为以下内容来扩展表单字段呈现:

{{ form.non_field_errors }}
<div class="fieldWrapper">
    {{ form.label.errors }}
    <label for="{{ form.label.id_for_label }}">{{ word }}</label>
    {{ form.label }}
</div>

另见Django documentation: Rendering fields manually

关于在模板中指定值,您可以使用{% with %}标记,尽管对于您的特定问题我似乎无关紧要。