2016-04-01 15 views
1

Django web sitem için bir kayıt sistemi yapıyorum ve bu kayıt formu çalışmıyor. Nedenini bilmiyorum, formu dolduruyorum ve hiçbir şey yapmıyor. Register_success sayfama yönlendirmiyor. İşte kodum bu yüzden sorunu teşhis etmenize yardımcı olabilirsiniz.Hiçbir şey yapma gibi görünen bir Django kayıt formu nasıl teşhis edilir?

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

Aldığınız bir hata var mı? – v1k45

cevap

4

sorun her zaman boş bir form oluşturarak olmasıdır. Bu, formunuzda herhangi bir hata görmeyeceğiniz anlamına gelir.

args['form'] = UserCreationForm() 

Görünümünüzü aşağıdaki gibi değiştirerek bunu düzeltebilirsiniz. Yanıtlarında yedpodtrzitko tarafından fark olduğu için açıklama if request.method == 'POST': olmalıdır eğer ilk o

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

Not. Kullanımdan kaldırılan render_to_response'dan render'a geçiş yaptım, bu da işleri basitleştiriyor. Başarı görüşünüzü de güncellemenizi tavsiye ederim.

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

Teşekkürler. Tüm şimdi çalışıyor: D –

2

request.method değeri POST değil, post olmalıdır (büyük genel küçük).

Sınıf tabanlı görünümler kullanmanızı öneririm, çok fazla kod yazmanız gerekmeyecek ve daha fazla sinoptik olacak.

+0

Teşekkürler. Evet diğer görünümler dosyamda sınıf tabanlı görünümler kullanıyorum. –