2015-01-09 32 views
0

這是Django中一個非常基本的快速問題。在Django註冊中,如果用戶名已存在,請執行以下操作:

所以在我的意見,我在哪裏辦理登記,如果用戶試圖用已經存在我只想給一個消息,像旁邊 形式的跨度用戶名註冊 ,說:「錯了用戶名」。

如何打印該消息?

謝謝。

這是我的部分代碼:

def register(request): 
if request.method == 'POST': 
    if User.objects.filter(username = request.POST['username']).exists(): 
    #I want to show next to the username textfield in registration form, 
    #a span for example that says "Wrong Username" 
+1

處理此問題的最佳方法是使用表單的乾淨方法 - 您可以在特定字段中提出驗證錯誤 – karthikr

+0

@karthikr發佈一個確認語句和帖子作爲答案的示例。 – Igor

回答

0

正如在評論上述建議,你應該這樣做形式上的清潔方法,這會使事情變得更容易。但是如果你必須在視圖中做到這一點,這裏有一個例子:

if request.method == 'POST': 
    try: 
     user_exists = User.objects.get(username=request.POST['username']) 
     return HttpResponse("Username already taken") 
    except User.DoesNotExist: 
     # Username doesn't exist 
     # Do other validation ... 

然後顯示使用jQuery,還是其他什麼東西在span的響應。

+0

感謝您的答案。這是我真正的問題。如何將HttpResponse轉換爲跨度? :D謝謝 –

+0

@NicolasNicolas你在用AJAX做這件事嗎? – xyres

+0

理想情況下,我只想在已加載的頁面中顯示一個跨度。不重新呈現一個頁面。 –

0

要獲得HTTPResponse消息,您必須使用ajax來代替表單提交。

在這裏,我假設你正在使用下面的HTML頁面代碼。

<input type="text" name="username" id="username"/> <p id="error"></p> 

<input type="button" value="Register" id="register"> 

現在,你必須要像按鈕的單擊事件Ajax調用:(我假設你有Ajax調用的知識)

$("#register").on('click', function(){ 

var username=$("#username").val(); 

    $.ajax({ 
    . 
    . 
    . 
    success: fuinction(data){ 
     if(data=="error occured"){ 
      $("error").append("wrong username"); 
    } 
    } 

    }) 

    }); 

和views.py代碼是這樣的:

def register(request): 
if request.method == 'POST': 
    if User.objects.filter(username = request.POST['username']).exists(): 
    return HTTPResponse("error occured") 
相關問題