2017-12-30 16 views
0

私はビューのコードを持っている:jQueryの検証とDjango

def check_username(request): 
    if HttpRequest.is_ajax and request.method == 'GET': 
     username = request.GET['username'] 
     if User.objects.filter(username=username).exists(): 
      print('duplicate') # have this for checking in console 
      return HttpResponse(False) 
     else: 
      return HttpResponse(True) 
    else: 
     return HttpResponse("Zero") 

これは、jQueryのからの要求を受け取り、その印刷(「重複」)は、私が重複していた場合にのみ印刷し、右に動作します。 私のJSコード:

$("#formregister").validate({ 
     rules: { 
      username: { 
      required: true, 
      remote: "http://127.0.0.1:8000/accounts/checkname" 
      } 
     }, 
     messages: { 
      username: { 
      required: 'you MUST have username', 
      remote: 'gogogog' 
      } 
     } 
    }); 
}); 

「あなたはユーザ名を持たなければならないが、」正常に動作しますが、私は、リモートメッセージを取得することはできません。私は間違って何をしていますか?ありがとう!

編集:

を私はcheck_usernameするために、リモートincuryを使用しています。私はユーザー名をしようとすると、私の端末であり、「wefefwef」:

要求を取得するバックエンドのショーを複製
duplicate 
[30/Dec/2017 08:32:14] "GET /accounts/checkname/?username=DmitryAdmin HTTP/1.1" 200 5 

、しかし、何かがある:私は(すでに使用)DmitryAdminをしようとした場合

[30/Dec/2017 08:29:21] "GET /accounts/checkname?username=wefefwef HTTP/1.1" 301 0 
[30/Dec/2017 08:29:21] "GET /accounts/checkname/?username=wefefwef HTTP/1.1" 200 4 

私が取得します答えが間違っている。

HTML:

<div class="login-page"> 
    <div class="form"> 

     <form class="register-form" method="POST" action="{% url 'signup' %}" id = "formregister"> 
      {% csrf_token %} 
      <input class="input" type="text" 
       name="username" placeholder="имя пользователя" maxlength="150"/> 

      <input class="input" type="text" 
       name="email" placeholder="email"/> 

      <input class="input" type="password" id="password1" 
        name="password1" placeholder="пароль"/> 

      <input class="input" type="password" id="password2" 
       name="password2" placeholder="повторите пароль"/> 

      {% if form.username.errors %} 
      <p class="error-message" >Имя пользователя занято или использованы недопустимые символы</p> 
      {% endif %} 
      {% if form.email.errors %} 
      <p class="error-message" >Некорректный или зарегестрированный адрес электронной почты</p> 
      {% endif %} 
      {% if form.password2.errors %} 
      <p class="error-message" >Пароль не совпадает либо слишком легкий</p> 
      {% endif %} 

      <button type="submit">создать</button> 

      <p class="message">Уже зарегистрированны? <a href="#" id ="alogin-reg" for="login-form">Войти.</a></p> 
      <p class="message">Забыли пароль? <a href="#" id ="arestore-reg" for="reset-form">Восстановить.</a></p> 
     </form> 

EDITED#2:

[30/Dec/2017 09:28:05] "GET /accounts/checkname?username=wepfwe HTTP/1.1" 301 0 
[30/Dec/2017 09:28:05] "GET /accounts/checkname/?username=wepfwe HTTP/1.1" 200 4 
[30/Dec/2017 09:28:11] "GET /accounts/checkname/?username=Dmitry HTTP/1.1" 200 4 
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryA HTTP/1.1" 200 4 
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAd HTTP/1.1" 200 4 
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAdm HTTP/1.1" 200 4 
[30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAdmi HTTP/1.1" 200 4 
duplicate 
[30/Dec/2017 09:28:13] "GET /accounts/checkname/?username=DmitryAdmin HTTP/1.1" 200 5 
+0

Djangoのビューで真/偽の送信文字列メッセージのinstedいくつかの時間と限られたアイデアをあなたが探しているものがあります。どうぞよろしくお願いします。 – DmitrySemenov

+0

登録時にユーザー名を確認する必要があります。ユーザー名が存在する場合は、JQuery Validatorを使用してメッセージ 'gogogog'をレンダリングする必要があります。 –

答えて

0
$("#formregister").validate({ 
    rules: { 
     username: { 
     required: true, 
     remote: "http://127.0.0.1:8000/accounts/checkname" 
     } 
    }, 
    messages: { 
     username: { 
     required: 'you MUST have username', 
     remote: 'gogogog' 
     data: { 
       username: function() { 
       return $(".error-message").val(); 
     } 
     } 
    } 
}); 

このコード を試してみて、私はあなたの説明を読ん

+0

がそれを作った。チェック。 –