【问题标题】:Default value of a form in Django using REMOTE_USERDjango 中使用 REMOTE_USER 的表单的默认值
【发布时间】:2015-07-10 21:19:42
【问题描述】:

我只是希望表单中输入字段的默认值等于存储在作为服务器变量传递的 REMOTE_USER 变量中的值。在views.py 文件中,我可以通过request.META['REMOTE_USER'] 访问这个服务器变量。

但是在 forms.py 中我没有请求数据,那么如何将值设置为此?

forms.py:

from django import forms

class TimeSearchForm(forms.Form):
    username = forms.CharField(label='Username:', max_length=10, min_length=3)

views.py 表单声明:

form = TimeSearchForm(request.POST or None)

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    由于您可以访问视图中的值,因此您应该在此处设置默认值。在实例化表单时,您可以使用initial 参数将初始值传递给表单。

    form = TimeSearchForm(initial={'username': request.META['REMOTE_USER']})
    

    编辑

    无论如何不要那样做,这是一个脆弱的黑客。使用正确的 if/else:

    if request.method == 'POST':
        form = TimeSearchForm(request.POST)
        if form.is_valid():
            ... whatever ...
    else:
        form = TimeSearchForm(initial={'username': request.META['REMOTE_USER']})
    return ...
    

    【讨论】:

    • 我添加了如何在 OP 中声明我的表单。我应该如何将此与我已经存在的声明(包括发送帖子数据(如果有))结合起来?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2010-10-10
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多