2017-03-17 6 views
0

したがって、djangoを使ってtodoをデータベースに保存しようとしています。次のように私のテンプレートは次のとおりです。イムは「new_todo_text」をキャッチしようDjangoのポストフォームはデータベースへの入力をレンダリングしません

<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%} 

私の見解は次のようになります。

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はどんなI空をオンにしないということですフォームに追加...ここで私の問題は何ですか?

+0

あなたは本当にdjangoのフォームとmodelformsについて学ぶべきです... –

答えて

2

input要素の中にname属性を宣言していないという問題があります。そのname attibuteは、Django request.POSTで取得するためのキーとして使用されます。

ので、これまでの変更:

<input type="text" id="text" name="new_todo_text" value="{{new_todo_text}}"/> 

request.POST辞書-などがinputnamevalueにビルド辞書を使用します。次に、request.POST['input_name_here']のようなものを行うことができます。

+0

ありがとうnik!チャームのように働いた! :) –

+0

ようこそ。お役に立てて嬉しいです! –

関連する問題