首页 > 解决方案 > Django HTML 下拉菜单

问题描述

我正在尝试制作一个 html 下拉列表并将值传递到 Postgrase SQL 数据库中。正在从另一个数据库表中检索我的下拉值。每次我提交表单时,它都会给我一个 MultiValueKeyDictError。我知道我可以使用 forms.py 来做同样的事情,但我想探索 HTML 的方式来做这件事。

我的 HTML 文件

                            <form action = "" method = "post">
                            {% csrf_token %}
                            <label for = "LogType"></label>
                            <input id ="LogType" type = "text" value = "{{ user.department }}">
                            <label for ="DelayCategory">Delay Category</label>
                            <select id = "delaycategory" class = "form-control">
                            {%if  user.department == 'TechAssembly'%}
                                {%for techdelay in techdelay%}
                                    <option value = "{{ techdelay.DelayCode }}">{{ techdelay.DelayCategory}}</option>
                                {%endfor%}
                            {%endif%}
                            {%if  user.department == 'Testing'%}
                                {%for testdelay in testdelay%}
                                    <option value = "{{ testdelay.DelayCode }}">{{ testdelay.DelayCategory}}</option>
                                {%endfor%}
                            {%endif%}
                            </select>
                            <label for =  "iterations">Iterations</label>
                            <input type = "number" id = "iterations">
                        
                        <center><input type="submit" value=Submit id = "button"></center>
                        </form>

我的 Views.py 文件

def rulesView(request, user_name):
testdelay = TestingDelayCategory.objects.all()
techdelay = TechDelayCategory.objects.all()
if request.method == "POST":
    rulesnew = rules()
    rulesnew.DelayCategory = request.GET['DelayCategory']
    rulesnew.LogType = request.POST('LogType')
    rulesnew.iterations = request.POST('iterations')
    rulesnew.save()
context = {
    'techdelay':techdelay,
    'testdelay':testdelay,
}
return render(request, 'rules/rules.html', context)

标签: pythonhtmldjango

解决方案


rulesnew.DelayCategory = request.GET['DelayCategory']
rulesnew.LogType = request.POST('LogType')
rulesnew.iterations = request.POST('iterations')

再看一遍:request.GET应该request.POSTrequest.POST('LogType')应该request.POST['LogType']与迭代相同。

错误消息应包括引发错误的确切行。因此,如果您告诉我们错误已引发,例如在这一行中,调试会更容易rulesnew.LogType = request.POST('LogType')


推荐阅读