2017-01-12 7 views
1

私はDjangoを学んでおり、フォームにいくつかの問題があります。私は名前を入力して別のページに表示する簡単なフォームを作成しようとします。しかし、is_valid()は常にfalseを返します。 、Django、フォームis_valid()は常にfalseです

<form name = "form" action = "{% url 'contact' %}" method = "POST" > 
    {% csrf_token %} 
     <input type="text" name="username" placeholder="Name"> 
     <button type="submit">Login</button> 
</form> 

forms.py私のエラー

from django import forms 

class OrderForm(forms.Form): 
    user=forms.CharField(max_length=100) 

views.py

def order(request): 
    return render(request, 'myapp/order.html', {}) 


def contact(request): 
    username='not logged' 

    if request.method == 'POST' : 
     form=OrderForm(request.POST) 

     if form.is_valid(): 
      username=form.cleaned_data['username'] 
     else: 
      username='not worked' 
    else: 
     form=OrderForm() 

    return render(request, 'myapp/contacts.html', {'username':username}) 

order.htmlを見つけるために私を助けてくださいフォームのフィールドはジャンゴでuser命名されている間contacts.html

You are : <strong>{{ username }}</strong> 

答えて

3

あなたのフォームコントロールは、HTML内の名前usernameを持っています。したがって、フォームフィールドには何も設定されていません。

通常、フォームをコンテキストに配置してから、{{ form }}などのようにレンダリングするか、独自のフォームコントロールを構築するのではなく、各フィールドをレンダリングします。テンプレート{{}} form.as_pをレンダリング時にhttps://docs.djangoproject.com/en/1.10/topics/forms/#working-with-form-templates

+0

はい、「ユーザー名」を「ユーザー名」に変更しました。ありがとうございました! – user7411127

0

views.py

from forms import OrderForm 
    def order(request): 
     form = OrderForm() 
     return render(request, 'myapp/order.html', {"form" : form}) 

order.html

<form name = "form" action = "{% url 'contact' %}" method = "POST" > 
    {% csrf_token %} 
     {{form.as_p}} 
     <button type="submit">Login</button> 
</form> 

次のようになります。ドキュメントがどのように表示され
<p><label for="id_username">Username:</label> 
    <input id="id_username" type="text" name="username" maxlength="100" required /></p> 
関連する問題