I am currently creating an register/login form with the Django framework, since I am new to this framework, I don't know much about the FORM API.
I am not using the FORM API, since I don't know if I can customize it. Is there any way to use my styling with the FORM API? As the state of now, I am just creating my own one, without using the API, but since the FORM API is more secure and much faster to set up for user creation, I would like to use it.
So my question is, can I implement custom styling with the FORM API? Including <input>,<div> etc..
Here is my HTML form:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
<div class="limiter">
<div class="container-login100" style="background:black;">
<div class="wrap-login100">
<form class="login100-form validate-form" method='POST' action="{% url 'users:register' %}" >
{% csrf_token %}
<span class="login100-form-logo">
<i class="zmdi zmdi-landscape"></i>
</span>
<span class="login100-form-title p-b-34 p-t-27">
Register
</span>
<div class="wrap-input100 validate-input" data-validate = "Enter username">
<input class="input100" type="text" name="username" placeholder="Username" required>
<span class="focus-input100" data-placeholder=""></span>
</div>
<div class="wrap-input100 validate-input" data-validate="Enter password">
<input class="input100" type="password" name="pass" placeholder="Password" required>
<span class="focus-input100" data-placeholder=""></span>
</div>
<div class="wrap-input100 validate-input" data-validate="Confirm password">
<input class="input100" type="password" name="pass-confirm" placeholder="Confirm Password" required>
<span class="focus-input100" data-placeholder=""></span>
</div>
<div class="wrap-input100 validate-input" data-validate="Enter Email">
<input class="input100" type="email" name="mail" placeholder="E-Mail" required>
<span class="focus-input100" data-placeholder=""></span>
</div>
<div class="container-login100-form-btn">
<button class="login100-form-btn" type="submit" name="submit" value="submit">
Register
</button>
</div>
<div class="text-center p-t-90">
<a class="txt1" href="login">
Already registered?
</a>
</div>
</form>
</div>
</div>
</div>
Here is my views.py backend:
def register(request):
if request.method == "POST":
username = request.POST["username"]
password = request.POST["pass"]
password_confirm = request.POST["pass-confirm"]
email = request.POST["mail"]
submit = request.POST["submit"]
print("UserName : ", username)
print('Email : ', email)
print('Password : ', password)
print('Password Confirm : ', password_confirm)
SpecialSym =['$', '@', '#', '%', '?']
confirm = False
if request.POST.get("submit"):
if len(username) < 7:
print('Username must be more than 10 char.')
confirm = False
messages.error(request, "Username must be more than 10 char.", 'red')
return HttpResponseRedirect(reverse('users:register'))
if len(username) > 15:
print('Username must be less than 15 char.')
confirm = False
messages.error(request, "Username must be less than 15 char.", 'red')
return HttpResponseRedirect(reverse('users:register'))
if any(char in SpecialSym for char in username):
print('Username can\'t contain special characters.')
confirm = False
messages.error(request, "Username can't contain special characters", 'red')
return HttpResponseRedirect(reverse('users:register'))
if len(password) < 8:
print("Your password is too short")
confirm = False
messages.error(request, "Your password is too short.", 'red')
return HttpResponseRedirect(reverse('users:register'))
if len(password) > 25:
print("Your password must be less than 25 char")
confirm = False
messages.error(request, "Your password must be less than 25 char.", 'red')
return HttpResponseRedirect(reverse('users:register'))
if not any(char.isdigit() for char in password):
print('Password should have at least one numeral')
confirm = False
messages.error(request, "Your password should have at least one numeral ", 'red')
return HttpResponseRedirect(reverse('users:register'))
if not any(char.isupper() for char in password):
print('Password should have at least one uppercase letter')
confirm = False
messages.error(request, "Your password should have at least one uppercase letter ", 'red')
return HttpResponseRedirect(reverse('users:register'))
if not any(char.islower() for char in password):
print('Password should have at least one lowercase letter')
confirm = False
messages.error(request, "Your password should have at least one lowercase letter ", 'red')
return HttpResponseRedirect(reverse('users:register'))
if not any(char in SpecialSym for char in password):
print('Password should have at least one of the symbols $@#?')
confirm = False
messages.error(request, "Your password should have at least one of these symbols: $@#? ", 'red')
return HttpResponseRedirect(reverse('users:register'))
if (password != password_confirm):
print("Passwords don't match")
confirm = False
messages.error(request, "Passwords don't match.", 'red')
return HttpResponseRedirect(reverse('users:register'))
if confirm == True:
messages.success(request, "Success! form submitted.", 'green')
return HttpResponseRedirect(reverse('users:register'))
return render(request, 'users/register.html')