django - 单输入django表单
问题描述
我试图从 django 表单中获取单个输入,但它 在 /books/f/ 处给了我错误 ValueError 视图 main.views.select_team 没有返回 HttpResponse 对象。它返回 None 。
看法
def select_team(request):
if request.method == 'POST':
Team.objects.create(user=request.user, total=request.POST('team_number'))
return redirect(reverse('books', args=()))
形式
<form action="{% url 'select_team' %}" method="post" style="display: inline;">
{% csrf_token %}
<input type="number" id="start" name="'team_number'" min="2" max="5" value="2"/>
<label for="start">select in range of 2 to 5</label>
<button type="submit" class="btn btn-danger btn-xs">
<span class="glyphicon glyphicon-remove"></span> create teams
</button>
</form>
网址
url(r'^books/f/$', views.select_team, name='select_team')
解决方案
首先,您必须在点击 url 以测试表单时呈现模板。为此使用render。
return render(request, 'template_name.html')
然后抓取 POSTed 数据使用request.POST.get('team_number')
. 所以你现在的看法是:
def select_team(request):
if request.method == 'POST':
Team.objects.create(user=request.user, total=request.POST.get('team_number'))
return redirect(reverse('books', args=()))
return render(request, 'template_name.html')
你是双引号name="team_number
输入的属性,所以模板应该是:
<form action="{% url 'select_team' %}" method="post" style="display: inline;">
{% csrf_token %}
<input type="number" id="start" name="team_number" min="2" max="5" value="2"/>
<label for="start">select in range of 2 to 5</label>
<button type="submit" class="btn btn-danger btn-xs">
<span class="glyphicon glyphicon-remove"></span> create teams
</button>
</form>
推荐阅读
- cmd - CMD 如何从文本文件中读取多个 IP 并将结果打印到一个文件中?
- python-3.x - 对于给定的单词,预测聚类并从聚类中获取最近的单词
- python - Selenium 使用 xpath 在已获取的 WebElement 中查找子元素始终返回整个页面上的第一个匹配项
- git - 如何使用 Bitbucket API 按日期对带有 bitbucket 标记的提交进行排序?
- angular - 使用 ng-recaptcha 将 Google reCaptcha v3 集成到 Angular 应用程序中
- rust - 为了降低特征对象,为什么它必须是静态的?
- android - 在片段内看不到底部表
- elasticsearch - 如何集成 Spring Data Elasticsearch(存储库接口)和模板查询?
- c++ - C++:如何知道一个点是否与两条线段相交?
- mysql - 修改 sql lite 以创建新查询