2017-12-30 6 views
0

내가보기에 코드를 가지고 : 그것은 JQuery와에서 요청하고 인쇄 소요JQuery와 유효성 검사기와 장고

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

를 ('중복') 나 중복이 인쇄하는 경우에만, 바로 작동합니다. 내 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를 사용합니다.

[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 

내가 DmitryAdmin을 (이미 사용)하려고하면 내가 얻을 :

쇼, 그 백엔드 GET 요청을 중복
duplicate 
[30/Dec/2017 08:32:14] "GET /accounts/checkname/?username=DmitryAdmin HTTP/1.1" 200 5 

,하지만 뭔가가 내가 "wefefwef"이름을하려고 할 때 내 단말기에있다 대답이 잘못되었습니다.

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> 

수정 됨 # 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

장고보기에 참/거짓 보내기 문자열 메시지의 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

가 그것을 만들었습니다. 검사. –