【问题标题】:Preserve checked checkboxes after post in django在 django 中发布后保留选中的复选框
【发布时间】:2014-09-05 03:14:22
【问题描述】:

我想在提交表单后保留表单字段。我可以保留除选中复选框之外的所有字段

这是我的表单操作视图:

def student_submit_info(request):
    form_values = {}
    if request.method == 'POST':
        form = StudentForm(request.POST)
        print form.is_valid()
        form_values = getDetails(request)
        if form.is_valid():
            print request.user.username
            student = Student.objects.get(user=request.user)
            // saving student to DB
            saveDetails(request, student, form_values)
    return render_to_response('student.html', form_values, context_instance=RequestContext(request))

def getDetails(request):
  #fetch input data
   form_values = {}
   form_values['first_name'] = request.POST['first_name']
   form_values['last_name'] = request.POST['last_name']
   form_values['skills'] = request.POST.getlist('skills[]')
   return form_values

我想保留技能(复选框),这是我的模板

的一部分
skill1<input type="checkbox" name="skills[]" checked value="skill1"/>
skill2<input type="checkbox" name="skills[]" value="skill2"/>
skill3<input type="checkbox" name="skills[]" value="skill3"/>

【问题讨论】:

  • 你为什么使用user = User.objects.get(username=request.user.username)而不是简单的request.user?
  • 你的 form 变量来自哪里?
  • 我认为 Django 表单不支持 name="something[]" 表示法。使用内置小部件可能会更简单,请参阅此答案:stackoverflow.com/questions/4381300/…

标签: python html django forms checkbox


【解决方案1】:

您应该创建一个custom django Forms 来轻松处理表单,例如帖子视图:

def post_view(request):
    form = MyForm(request.POST)
    if form.is_valid():
        do_something()
    render(request, 'your_temp', {'MyForm': MyForm'})

使用这种sn-p,表单中的数据将始终是发送的数据。 您可以为空的技能复选框覆盖 is_valid()。

【讨论】:

  • 我错过了 lineform = StudentForm(request.POST)。已编辑。我还在我的模板中添加了 。感谢 request.user 提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2012-03-18
  • 2022-09-30
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多