Skip to main content
 首页 » 编程设计

Python Django 获取用户输入

2025年04月02日28lyhabc

我正在设置一个简单的 html 页面,该页面捕获用户输入的信息,并根据用户输入的信息制作一个新页面。问题是我无法取回用户在后台输入的信息,我不明白我哪里出错了。

我的 View 文件是这样设置的:

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 表单字段的值设置为用户输入的值并提交。我应该找回一些东西,但 View 中的变量“数据”不包含用户输入。

谢谢

请您参考如下方法:

您正在使用 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 package 在模板中添加属性。