registration.html 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. {% extends "base.html" %}
  2. {% block content %}
  3. <h1>Регистрация</h1>
  4. <form method="post">
  5. {{ form.as_p}}
  6. {% csrf_token %}
  7. <button
  8. type="submit"
  9. class="btn btn-primary">
  10. Регистрация
  11. </button>
  12. </form>
  13. {% endblock %}
  14. <script>
  15. document.querySelector('#id_username').addEventListener('blur', async (event) => {
  16. const res = await fetch('/validate_username?username=${event.target.value}).then(res => res.json());
  17. event.target.parentNode.querySelector('.errorList')?.remove();
  18. const errors = document.createElement('ul');
  19. errors.classList.add('errorList');
  20. if (res.is_taken) {
  21. errors.innerHTML += '<li>Данный логин занят</li>';
  22. }
  23. if (event.target.value.length == 0) {
  24. errors.innerHTML += '<li>Лoгин не может быть пустым</li>';
  25. }
  26. const re= new RegExp("^[a-zA-Z0-9-]+$");
  27. if (!re.test(event.target.value)) {
  28. errors.innerHTML += '<li>Разрешены только латиница, цифры или тире</li>';
  29. }
  30. event.target.parentNode.prepend(errors);
  31. })
  32. </script>