【发布时间】:2021-10-17 07:29:20
【问题描述】:
我有一个表单,里面是一个带有选项的选择标签,它看起来像这样:
<form method="POST">
{% csrf_token %}
<div class="row">
<div class="col-sm-3">
<h4 class="mb-0 mt-2">Title:</h4>
</div>
<div class="col-sm-9">
<input type="text" name="title" class="form-control" placeholder="Blogpost Title">
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h4 class="mb-0 mt-2">Tags:</h4>
</div>
<div class="col-sm-9">
<select class="form-select" name="tags" multiple aria-label="multiple select example" required>
{% for tag in tags %}
<option value="{{tag.name}}">{{tag.name}}</option>
{% endfor %}
</select>
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h4 class="mb-0 mt-2">Description:</h4>
</div>
<div class="col-sm-9">
<textarea name="desc" class="form-control" id="exampleFormControlTextarea1" rows="4" placeholder="Blogpost Description (HTML supported)"></textarea>
</div>
</div>
<hr>
<div class="text-center">
<button type="submit" class="btn btn-primary">Create</button>
</div>
</form>
这是我的观点,我正在处理它:
def create_blogpost(request, id):
user = User.objects.get(id=id)
tags = Tag.objects.all()
if request.method == 'POST':
title = request.POST['title']
blogpost_tags = request.POST['tags']
desc = request.POST['desc']
# BlogPost.objects.create(
# title=title,
# profile=user,
# tags=tags,
# desc=desc
# )
else:
pass
context = {
'user': user,
'tags': tags
}
return render(request, 'main/create_blogpost.html', context)
当我打印出 request.POST 时,它看起来像这样:
request.POST <QueryDict: {'csrfmiddlewaretoken': ['TOKEN'], 'title': ['blogpost title'], 'tags': ['Python', 'C++'], 'desc': ['']}>
这里我选择了 2 个标签:Python 和 C++,但是当我打印出变量 blogpost_tags 时,它只显示列表的最后一个元素,在本例中是 C++。
为什么会这样?我是不是做错了什么?
【问题讨论】:
标签: python django dictionary