所以,我试图用django将todo保存到数据库中。我的模板如下:
<form action="{% url 'todo:add' %}" method="POST">
{% csrf_token %}
<input type="text" id="text" value="{{new_todo_text}}"/>
<input type="submit" value="Submit todo" />
</form>
{%if not_done_todos %}
<ul>
{%for todo in not_done_todos%}
<li>
<span>{{todo.text}}</span>
</li>
{%endfor%}
</ul>
{%else%}
<span>No todos for you!</span>
{%endif%}
我的观点,我试图捕捉“new_todo_text”看起来像这样:
def add(request):
"""Add todo to database"""
new_todo = Todo(text=request.POST.get('new_todo_text'),
done=False, date_created=timezone.now())
new_todo.save()
return HttpResponseRedirect(reverse('todo:index'))
问题是,无论我添加到表单中,todo.text都会显示为空...我的问题是什么?
答案 0 :(得分:2)
问题是您的input
元素内部未声明name
属性。 name
attibute将被用作使用Django request.POST
获取它的密钥。
所以,改为:
<input type="text" id="text" name="new_todo_text" value="{{new_todo_text}}"/>
request.POST
dict-like将使用input
&#39; name
和value
构建 dict。然后你可以做request.POST['input_name_here']
之类的东西。