Python Django获取用户输入

时间:2016-06-01 19:17:14

标签: python django

我正在设置一个简单的html页面,该页面捕获用户输入的信息,并根据用户输入的信息创建新页面。问题是我无法收回用户在支持时输入的信息,我不明白我哪里出错了。

我的观点文件设置如下:

def suggestion(request):  
    if request.method == 'POST':
        form = BusinessName(request.POST)
        if form.is_valid():
            data=form.cleaned_data  
            context = insert_function_here(data)
            return render( request,'mainpage.html', context)
    else:
        form = BusinessName()  
        context = {'form':form}
        return render( request,'mainpage.html', context) 

我的forms.py设置如下:

class BusinessName(forms.Form):
    business_name = forms.CharField(widget = forms.HiddenInput(), required = False)

我的html的相关部分设置如下:

<form id="user_input_form" method="post" action="http://127.0.0.1:8000/textinsighters/suggestion">
    Enter Your Business Name : <input type="text" list="browsers" name="browser" id="user_input">
    {% csrf_token %}
    {{ form }}
      <datalist id="browsers">
        <option value="Internet Explorer">
        <option value="Firefox">
        <option value="Chrome">
        <option value="Opera">
        <option value="Safari">
      </datalist>
      <button onclick="myFunction()">Submittt</button>
</form>
<script>
    function myFunction() {
document.getElementById("id_business_name").value = document.getElementById("user_input").value;                                            
document.getElementById("user_input_form").submit();
    }
</script>

我想要一个自动完成列表,这就是我在html中创建表单的原因。我得到用户输入,将Django表单字段的值设置为用户输入的值并提交它。我应该得到回报,但视图中的变量'data'不包含用户输入。

由于

1 个答案:

答案 0 :(得分:1)

您正在使用forms.HiddenInput()作为窗口小部件,然后自己添加表单字段。这不起作用。如果将字段类更改为TextInput,该怎么办:

class BusinessName(forms.Form):
    business_name = forms.CharField(widget = forms.TextInput())

如果你的目标是向窗口小部件添加自定义属性,那么可以通过提供一个attrs字典来完成:

class BusinessName(forms.Form):
    business_name = forms.CharField(widget = forms.TextInput(attrs={
        'list': 'browser'
    }))

或者您可以查看django-widget-tweaks包以在模板中添加属性。