我有这个模板收集author_info
模型的所有作者名称。这些名称显示为下拉列表。当我将所选值传递给视图时,它显示为null。模板:
<select>
<option value="" disabled selected>Choose author</option>
{% for author in ainfo %}
<option value="{{author.name}}" name="author_name">{{author.name}}</option>
{% endfor %}
</select>
来自观看次数的代码段:
if request.method=="POST":
author=request.POST.get('author_name')
答案 0 :(得分:2)
它为空,因为您尚未命名您的选择输入。当您尝试从请求中获取author_name
时,Django正在寻找名为author_name
的输入。在你的情况下没有。从选项中删除名称属性,并添加适当的名称属性以进行选择。
<select name="author>
<option value="" disabled selected>Choose author</option>
{% for author in ainfo %}
<option value="{{author.name}}">{{author.name}}</option>
{% endfor %}
</select>
和
author = request.POST.get('author')
此外,您可以将输入移至forms.py
并像其他任何形式一样使用它,验证选择等。
class AuthorForm(forms.Form):
author_choices = [
(None, 'Choose author')
]
for author in YourAuthorModel.objects.all():
author_choices.append((author.author_name, author.author_name))
authors = forms.ChoiceField(choices=author_choices)
答案 1 :(得分:0)
您应该启动物化选择,以使选择成为可能:
<script>
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('select');
var instances = M.FormSelect.init(elems);
});
</script>