2016-04-01 9 views
1

私は自分のdjangoウェブサイトの登録システムを作っていますが、この登録フォームは機能しません。なぜ、私はフォームを記入し、何もしません。それは私のregister_successページにリダイレクトされません。問題を診断するのに役立つコードはここにあります。何もしないように見えるDjango登録フォームを診断するには?

Views.py:

def register_user(request): 
    if request.method == 'post': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/accounts/register_success') 

    args = {} 
    args.update(csrf(request)) 
    args['form'] = UserCreationForm() 
    print(args) 
    return render_to_response('register.html', args) 


def register_success(request): 
    return render_to_response('register_success.html') 

Register.html:

<html> 
<body> 
{% block content %} 
    <h2>Register</h2> 
    <form action="/accounts/register/" method="post">{% csrf_token %} 
     {{ form }} 
     <input type="submit" value="Register"/> 
    </form> 
{% endblock %} 
</body> 
</html> 

Register_success.html:

<html> 
<body> 
{% block content %} 
    <h2>You have registered</h2> 
    <p>Click <a href="/accounts/login/">here</a> to login.</p> 
{% endblock %} 
</body> 
</html> 
+0

エラーはありますか? – v1k45

答えて

4

問題は、あなたが常に空白のフォームを作成しているということです。つまり、フォームにエラーは表示されません。

args['form'] = UserCreationForm() 

次のようにビューを変更して修正できます。その答えにyedpodtrzitkoによって発見としてif文最初は、if request.method == 'POST':でなければならないこと

from django.shortcuts import render 

def register_user(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/accounts/register_success') 
    else: 
     form = UserCreationForm() 

    return render(request, 'register.html', {'form': form}) 

は注意してください。私はrender_to_responseの代わりにrenderに変更しました。成功のビューを更新することをお勧めします。

def register_success(request): 
    return render(request, 'register_success.html') 
+0

ありがとうございます。すべて作業中です:D –

2

request.methodの値がPOST、ないpostであるべきである(大文字対小文字)。

私はクラスベースのビューを使用することをお勧めします、あなたはそのたくさんのコードを書く必要はないでしょう。

+0

ありがとうございます。他のビューファイルでクラスベースのビューを使用しています。 –

関連する問題