python - 表单字段输入的Python Django长度为1,即使它为空
问题描述
我正在使用 Python(3.6) 和 Django(2.1) 开发一个项目,我需要在其中实现搜索功能。我有两个搜索字段what
和where
. 用户可以为这两个字段输入多个值并用 a 分隔它们,
,然后我需要在将它们拆分后检查两个字段的长度,
。当一个字段为空时,它的长度应该是0
,但在我的情况下,它表明1
即使字段为空,长度也是如此。
这是我的代码: 来自 forms.py:
class FetchDataForm(forms.Form):
what = forms.CharField(max_length=256, required=True)
where = forms.CharField(max_length=256, required=False)
class Meta:
fields = ('what', 'where')
从模板/search.html:
<form method="POST" action="{% url 'udata:fetch-data' %}">
{% csrf_token %}
<div class="form-row">
<div class="form-group col-md-5">
<label for="inputEmail4" style="font-size: x-large">What:</label>
<br><span class="help"
style="font-size: smaller; padding-top: 0%;"> keywords, or company</span>
{% if dd.what %}
<input type="text" name="what" value="{{ dd.what }}" class="form-control" id="inputEmail4">
{% else %}
<input type="text" name="what" class="form-control" id="inputEmail4">
{% endif %}
</div>
<div class="form-group col-md-5">
<label for="inputEmail4" style="font-size: x-large">Where:</label>
<br><span class="help"
style="font-size: smaller; padding-top: 0%;">City, State or Zip code</span>
{% if dd.where %}
<input type="text" name="where" value="{{ dd.where }}" class="form-control"
id="inputPassword4">
{% else %}
<input type="text" name="where" value="" class="form-control" id="inputPassword4">
{% endif %}
</div>
<label for="inputPassword4"> </label>
<br><span class="help" style="font-size: smaller;"> </span>
<div class="form-group col-md-2">
<button type="submit" class="btn btn-primary btn-lg" style="margin-top:10%">Search</button>
</div>
</div>
</form>
从views.py:
what = form.cleaned_data['what']
where = form.cleaned_data['where']
get_len_what = len(what.split(','))
get_len_where = len(where.split(','))
print('What len is {}'.format(get_len_what))
print('where len is {}'.format(get_len_where))
1
即使字段为空,它也会打印出长度。这里有什么问题?
解决方案
这是一个有效的解决方案:
what = form.cleaned_data['what']
if ',' not in what and len(what) > 0:
get_len_what = len(what.split(','))
elif ',' in what and len(what) > 0:
get_len_what = len(what.split(','))
else:
get_len_what = len(what.split(',')) - 1
而且,我们可以为另一个实现相同的功能,即where
.
推荐阅读
- python - For 循环 - 闰年输入
- c++ - 您如何修复阵列以使其正确?
- c# - 当我尝试从 URL 导入 XML 时,这无法正常工作
- python - 为什么我的 PyCharm 检查就像合法的 Python 3.8 代码是非法的一样?
- asp.net - 合并多个列表
在 LINQ 中分组时 - swift - 在增强现实中处理 3D 交互和 UI 控件
- python - 从 lambda 函数返回 txt 文件以显示在浏览器中
- java - java - 如何通过Java中的Apache POI Excel输出大的csv文件?
- azure-cloud-shell - 是否可以检查 PowerShell 变量以查看您的脚本是否在 Azure 云 shell 中运行?
- macos - 带有加号和减号按钮的 MacOS 样式列表