在Django中如何将HTML表单输入的字符串传递到views视图?
类视图中可直接从请求对象的GET参数里获取表单提交的username值,修改后的视图代码如下:
template_name = 'Exames.html' def get_context_data(self,**kwargs): context = super(ShowExames, self).get_context_data(**kwargs) # 从GET请求中提取用户提交的username,无参数时默认返回空字符串 username = self.request.GET.get('username', '') # 仅当获取到有效username时执行过滤,无参数时返回空查询集,可按需修改默认逻辑 if username: exames = Examlabs.objects.filter(id_atendimento = username) else: exames = Examlabs.objects.none() context.update({'exames': exames}) return context def get_queryset(self): return Examlabs.objects.all()
额外注意事项
- 你现有表单的input标签type属性存在错误,不存在
username类型的input,建议修改为通用文本类型,避免浏览器兼容问题,修改后的表单代码如下:
<form id="username_exists_form" method='GET'> Name: <input type="text" name="username" /> <button type='submit'> Check </button> </form>
- 如果后续查询涉及敏感数据,建议将表单提交方法改为POST,同时在表单内添加Django CSRF防护标签
{% csrf_token %},对应视图中获取参数的代码改为username = self.request.POST.get('username', '') - 你也可以把提交的username参数传到上下文里,在模板中做回显,只需要在context.update里新增对应的键值对即可。
内容的提问来源于stack exchange,提问作者Ana Clara
相关产品推荐
相关产品推荐

