【问题标题】:Assign variable value to a form field in a template将变量值分配给模板中的表单域
【发布时间】:2015-07-31 07:04:23
【问题描述】:

我希望将视图函数one_label 中的变量word 中的值分配给模板中的表单字段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>

【问题讨论】:

  • {{ word }} 是来自视图上下文还是其他什么?
  • 它的值来自一个单独的python函数,在视图函数one_label中被调用

标签: javascript python django forms django-templates


【解决方案1】:

首先,您的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 %} 标签,尽管它似乎与您的特定问题无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多