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

Posted

技术标签:

【中文标题】将变量值分配给模板中的表单域【英文标题】: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中被调用 【参考方案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 % 标签,尽管它似乎与您的特定问题无关。

【讨论】:

以上是关于将变量值分配给模板中的表单域的主要内容,如果未能解决你的问题,请参考以下文章

尝试将变量值分配给结构元素。起初变量有正确的值,但结构元素有垃圾值

将变量值传递给 paypal API - first_name 和 last_name

通过单击鼠标将变量值传递给java中的servlet

如何将变量值传递给julia中的宏?

如何将变量值从一个文件中的一个类传递给另一个文件中的另一个类python tkinter

如何将变量值“传递”给 JSON 动态对象?