2013-07-14 53 views
0

我想在django中驗證用戶(使用簡單的authenticate()函數)。Django - 如何在使用django-bootstrap-toolkit登錄(或註冊)時驗證用戶?

def auth(request): 
    if request.method == 'POST': 
     auth_form = AuthenticationForm(request.POST) 
     if auth_form.is_valid(): 
      auth_form.save() 
      user = authenticate(username=request.POST['id_username'],password=request.POST['id_password']) 
      if user is not None: 
       login(request,user) 
       return redirect('/profile/home/') 
      else: 
       return redirect('/') 
    else: 
     return redirect('/') 

def register(request): 
    if request.method == 'POST': 
     form = SimpleUserCreation(request.POST) 
     if form.is_valid(): 
      form.save() 
      user = authenticate(username=request.POST['id_username'],password=request.POST['id_password1']) 
      login(request,user) 
      return redirect('/profile/home/') 
     else: 
      return redirect('/') 

這是顯示錶格模板 - 只是想顯示登錄和註冊在同一個頁面的形式(在這個例子中)

{% extends 'base.html' %} 

{% load bootstrap_toolkit %} 

{% block content %} 
    <div class="row"> 
     <div class="span4 offset1 login"> 
      <form class="form-signin" action="/auth/" method="POST"> 
       {% csrf_token %} 
       {{ auth_form|as_bootstrap }} 
       <br> 
       <center> 
        <button class="btn btn-large btn-primary" type="submit"> 
         Sign In 
        </button> 
       </center> 
      </form> 
     </div> 
     <div class="span4 offset2 signup"> 
      <form action="/register/" method="POST"> 
       {% csrf_token %} 
       {{ form|as_bootstrap }} 
       <br> 
       <center> 
        <button class="btn btn-large btn-primary" type="submit"> 
         Register 
        </button> 
       </center> 
      </form> 
     </div> 
    </div> 
{% endblock %} 

我得到這樣的錯誤:

ValueError at /auth/ 
The view SimpleUserAuth.auth.views.auth didn't return an HttpResponse object. 

任何想法,我哪裏錯了?我認爲它的身份驗證功能無法爲字段找到正確的ID ...也許我錯了。我是一個Noob:|

乾杯

+0

也請發表您的URLconf。似乎你沒有在urls.py文件中使用你的視圖。 – mawimawi

回答

0

在你auth方法,如果auth_form.is_valid()回報False,你不回一個response對象。

def register(request):的情況也是如此。如果它是GET請求,則該方法不會返回response對象。

因此,誤差(多個)

+0

但是當我嘗試沒有bootstrap-toolkit,它工作得很好......我的意思是兩種形式的is_valid()方法。我在這裏看錯了嗎? –

0

我提出在這些行的錯誤 -

1)AuthenticationForm取參數,如下所示: AuthenticationForm(數據= request.POST)

2)U無法保存AuthenticationForm。

auth_form = AuthenticationForm(request.POST) 
     if auth_form.is_valid(): 
      auth_form.save() 

感謝您的幫助KARTHIK :)

相關問題