Signup Form Fields are not rendering Django - django

Here is my code
In Urls.py
from django.contrib.auth import authenticate, login, logout
from .forms import CustomUserCreationForm
def registeruser(request):
form = CustomUserCreationForm()
if request.method == "POST":
form = CustomUserCreationForm(request, POST)
if form.is_valid():
user = form.save(commit=False)
user.save()
user = authenticate(request, username=user.username, password=request.POST['password'])
if user is not None:
login(request, user)
return redirect('home')
context = {'form' : form}
return render(request, 'signup.html', context)
urlpatterns = [
path('signup/', registeruser, name='signup'),
]
In forms.py
from django.forms import ModelForm
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'password1', 'password2']
def __init__(self, *args, **kwargs):
super(CustomUserCreationForm, self).__init__(self, *args, **kwargs)
self.fields['username'].widget.attrs.update({'class' : 'form-control', 'placeholder' : 'Enter Username'})
self.fields['password1'].widget.attrs.update({'class' : 'form-control', 'placeholder' : 'Enter Password'})
self.fields['password2'].widget.attrs.update({'class' : 'form-control', 'placeholder' : 'Re-Enter Password'})
In Signup.html
<form class="text-left clearfix" method="POST">
{% csrf_token %}
{% for field in forms %}
<div class="form-group">
{{field}}
</div>
{% endfor %}
<div class="text-center">
<button type="submit" class="btn btn-main text-center">Sign UP</button>
</div>
</form>
Result is
Signup page image
I tried alot of settings but got no input field on signup page. It just render nothing.
Please help me what am i doing wrong?

Instead of using a for loop, try just using form.
#view.py
return render(request, 'signup.html', {'form': form})
#signup
<form class="text-left clearfix" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-main text-center" value="Sign UP">
</form>

Related

request.user.is_authenticated does not work after changing urls

So my code looked like this at first:
views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Information
from django.db.models import Q
from django.contrib import messages
from django.contrib.auth import authenticate, login, logout
from .forms import MyForm
# rooms = [
# {'id': 1, 'name': 'Lets learn python!'},
# {'id': 2, 'name': 'Design with me'},
# {'id': 3, 'name': 'Frontend developers'},
# ]
def home(request):
q = request.GET.get('q') if request.GET.get('q') !=None else ''
information_search = Information.objects.filter(
Q(host__icontains=q) |
Q(hostname__icontains=q) |
Q(port__icontains=q) |
Q(platform__icontains=q) |
Q(username__icontains=q) |
Q(password__icontains=q) |
Q(groups__icontains=q)
)
sort_info = []
informations = Information.objects.all()
for i in informations:
if i.groups not in sort_info:
device_group = i.groups
sort_info.append(device_group)
information_count=information_search.count()
context = {'informations':informations, 'information_search':information_search, 'information_count':information_count, 'sort_info':sort_info}
return render(request, 'polls/home.html', context)
def view_data(request, pk):
information = Information.objects.get(id=pk)
context = {'information':information}
return render(request, 'polls/view_data.html', context)
def loginPage(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
try:
user = User.objects.get(username=username)
except:
messages.error(request, 'User does not exist')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.error(request, "Username or password does not exist")
context = {}
return render(request, 'polls/login_register.html', context)
def logoutUser(request):
logout(request)
return redirect('home')
def edit_data(request, pk):
information = Information.objects.get(id=pk)
form = MyForm(instance=information)
if request.method == 'POST':
form = MyForm(request.POST, instance=information)
if form.is_valid():
form.save()
return redirect('home')
context = {'form': form}
return render(request, 'polls/room_form.html', context)
def delete_data(request, pk):
information = Information.objects.get(id=pk)
if request.method == 'POST':
information.delete()
return redirect('home')
return render(request, 'polls/delete.html', {'obj': information})
def my_form(request):
if request.method == "POST":
form = MyForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
form = MyForm()
return render(request, 'polls/room_form.html', {'form': form})
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('login/', views.loginPage, name="login"),
path('logout/', views.logoutUser, name="logout"),
path('', views.home, name='home'),
path('view_data/<str:pk>/', views.view_data, name = "view_data"),
path('edit_data/<str:pk>/', views.edit_data, name = "edit_data"),
path('host/', views.my_form, name='my_form'),
path('delete/<str:pk>/', views.delete_data, name='delete_data')
]
login_register.html
{% extends 'main.html' %}
{% block content %}
<div>
<form method="POST" action="">
{% csrf_token %}
<label>Username:</label>
<input type="text" name="username" placeholder="Enter Username" />
<label>Password:</label>
<input type="password" name="password" placeholder="Enter Password">
<input type="submit" value="login">
</form>
</div>
{% endblock content %}
I wanted to change the authentication system so that the home view is only returned if the user is logged in. I was able to show home view after the user logs in by making small changes to urls.py and login_register.html as follows:
views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Information
from django.db.models import Q
from django.contrib import messages
from django.contrib.auth import authenticate, login, logout
from .forms import MyForm
# rooms = [
# {'id': 1, 'name': 'Lets learn python!'},
# {'id': 2, 'name': 'Design with me'},
# {'id': 3, 'name': 'Frontend developers'},
# ]
def home(request):
q = request.GET.get('q') if request.GET.get('q') !=None else ''
information_search = Information.objects.filter(
Q(host__icontains=q) |
Q(hostname__icontains=q) |
Q(port__icontains=q) |
Q(platform__icontains=q) |
Q(username__icontains=q) |
Q(password__icontains=q) |
Q(groups__icontains=q)
)
sort_info = []
informations = Information.objects.all()
for i in informations:
if i.groups not in sort_info:
device_group = i.groups
sort_info.append(device_group)
information_count=information_search.count()
context = {'informations':informations, 'information_search':information_search, 'information_count':information_count, 'sort_info':sort_info}
return render(request, 'polls/home.html', context)
def view_data(request, pk):
information = Information.objects.get(id=pk)
context = {'information':information}
return render(request, 'polls/view_data.html', context)
def loginPage(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
try:
user = User.objects.get(username=username)
except:
messages.error(request, 'User does not exist')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
messages.error(request, "Username or password does not exist")
context = {}
return render(request, 'polls/login_register.html', context)
def logoutUser(request):
logout(request)
return redirect('home')
def edit_data(request, pk):
information = Information.objects.get(id=pk)
form = MyForm(instance=information)
if request.method == 'POST':
form = MyForm(request.POST, instance=information)
if form.is_valid():
form.save()
return redirect('home')
context = {'form': form}
return render(request, 'polls/room_form.html', context)
def delete_data(request, pk):
information = Information.objects.get(id=pk)
if request.method == 'POST':
information.delete()
return redirect('home')
return render(request, 'polls/delete.html', {'obj': information})
def my_form(request):
if request.method == "POST":
form = MyForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
form = MyForm()
return render(request, 'polls/room_form.html', {'form': form})
login_register.html
{% extends 'main.html' %}
{% block content %}
<div>
<form method="POST" action="home/">
{% csrf_token %}
<label>Username:</label>
<input type="text" name="username" placeholder="Enter Username" />
<label>Password:</label>
<input type="password" name="password" placeholder="Enter Password">
<input type="submit" value="login">
</form>
</div>
{% endblock content %}
However the bar at navbar.html which shows logout option if the user is logged in stops working..
navbar.html
<a href="/polls">
<h1>LOGO</h1>
</a>
<form method="GET" action="{% url 'home' %}">
<input type="text" name="q" placeholder="Search Devices...">
</form>
{% if request.user.is_authenticated %}
Logout
{% else %}
Login
{% endif %}
<hr>
navbar is included in main.html as follows:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>StudyBud</title>
</head>
<body>
{% include 'navbar.html' %}
{% block content %}
{% endblock %}
</body>
</html>
and main.html is extended by other templates. Here main.html and navbar.html are stored in the templates folder of the root directory while other templates are in the 'polls' app folder.
If it helps here are my other files.
models.py
from django.db import models
from django.contrib.auth.models import User
class Information(models.Model):
host = models.CharField(max_length=200, null=True, blank=False)
hostname = models.CharField(max_length=200, null=True, blank=False)
port = models.IntegerField()
platform = models.CharField(max_length=200, null=True, blank=False)
username = models.CharField(max_length=200, null=True, blank=False)
password = models.CharField(max_length=200, null=True, blank=False)
groups = models.CharField(max_length=200, null=True, blank=False)
def __str__(self):
return self.host
Here is home.html which extends main.html and is supposed to show the logout bar.
{% extends 'main.html' %}
{% block content %}
<h2>Inventory Management</h2>
<style>
.home-container{
display: grid;
grid-template-columns: 1fr 3fr;
}
</style>
<div class="home-container">
<div>
<h3>Browse Groups</h3>
<hr>
{% for i in sort_info %}
<div>
{{i}}
<br><br>
</div>
{% endfor %}
</div>
<div>
<h5>{{information_count}} devices registered</h5>
<hr>
Add Device
<hr>
{% for information in information_search %}
<span>#{{information.host}}</span>
<h3> view </h3>
Edit
Delete
<hr>
{% endfor %}
</div>
</div>
{% endblock content %}
</div>
Any insight please? I am a beginner and I was trying to make changes and implement my own features in the code i followed through a tutorial.

error messages are not shown in django form. and how to solve this value error?

error messages are not working in Django templates.
after add error code in html template it shows no error message in webapp when fields are empty and press on submit button. html5 error is "novalidate" in template.
ValueError at /signup/
The view blog.views.user_signup didn't return an HttpResponse object. It returned None instead.
forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, UsernameField
from django.contrib.auth.models import User
from django.utils.translation import gettext,gettext_lazy as _
class SignUpForm(UserCreationForm):
password1 = forms.CharField(label='Password',widget=forms.PasswordInput(attrs={'class':'form-control'}))
password2 = forms.CharField(label='Confirm Password(again)',widget=forms.PasswordInput(attrs={'class':'form-control'}))
class Meta:
model = User
fields = ['username','first_name','last_name','email']
labels = {'username':'Username','first_name':'First Name','last_name':'Last Name','email':'Email'}
widgets = {'username':forms.TextInput(attrs={'class':'form-control'}),
'first_name':forms.TextInput(attrs={'class':'form-control'}),
'last_name':forms.TextInput(attrs={'class':'form-control'}),
'email':forms.EmailInput(attrs={'class':'form-control'}),}
class LoginForm(AuthenticationForm):
username = UsernameField(widget=forms.TextInput(attrs={'autofocus':True, 'class':'form-control'}))
password = forms.CharField(label=_('password'),strip=False, widget=forms.PasswordInput(attrs={'autocomplete':'current-password','class':'form-control'}))
signup.html
{% extends 'blog/base.html' %}
{% load static %}
{% block content %}
<div class="col-sm-10">
<h3 class="text-white my-5">Signup Page</h3>
<form action="" class="post" novalidate>
{% csrf_token %}
{% for fm in form %}
<div class="form-group">
{{fm.label_tag}} {{fm}} {{fm.errors | striptags}}
</div>
{% endfor %}
<input type="submit" value='Submit' class='btn btn-primary'>
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<p> {{error}} </p>
{% endfor %}
{% endif %}
</form>
</div>
{% endblock content %}
views.py
from django.shortcuts import render,HttpResponseRedirect
from django.contrib import messages
# Create your views here.
# home
def home(request):
return render(request, 'blog/home.html')
# about
def about(request):
return render(request, 'blog/about.html')
# contact
def contact(request):
return render(request, 'blog/contact.html')
# Dashboard
def dashboard(request):
return render(request, 'blog/dashboard.html')
# Logout
def user_logout(request):
return HttpResponseRedirect('/')
# Signup
def user_signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
messages.success(request, 'Congratulations You have become an Author.')
form.save()
else:
form = SignUpForm()
return render(request, 'blog/signup.html',{'form':form})
# Login
def user_login(request):
form = LoginForm()
return render(request, 'blog/login.html', {'form':form})
You need to handle GET and POST request :
def user_signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
messages.success(request, 'Congratulations You have become an Author.')
form.save()
else:
form = SignUpForm()
return render(request, 'blog/signup.html',{'form':form})
Please make sure to use POST method in your html :
<form action="" method="POST" class="post" novalidate>
...
</form>

why is my input fields not showing in the website?

I have created a login and registration page using the same code. The registration page shows username input fields and other fields but the login page only shows the button. Can anyone help me in this
Code:
Login Page:
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Join Today</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Sign Up</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
Already Have An Account? <a class="ml-2" href="{% url 'login' %}">Sign In</a>
</small>
</div>
</div>
Registration Page:
<div class="site-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Log In </legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Login</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
Need An Account? <a class="ml-2" href="{% url 'register' %}">Sign Up Now</a>
</small>
</div>
</div>
Registration page
Login page
This is the views of the project
Views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm
from .models import Post
from django.contrib.auth.decorators import login_required
def home(request):
context = {
'posts': Post.objects.all()
}
return render(request, 'blog/home.html', context)
def about(request):
return render(request, 'blog/about.html', {'title': 'About'})
def gallery(request):
return render(request, 'blog/gallery.html', {'title': 'Gallery'})
def foodopedia(request):
return render(request, 'blog/foodopedia.html', {'title': 'Foodopedia'})
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('blog-home')
else:
form = UserRegisterForm()
return render(request, 'blog/register.html', {'form': form})
def login(request):
return render(request, 'blog/login.html', {'title': 'Login'})
#login_required
def profile(request):
return render(request, 'blog/profile.html', {'title': 'Profile'})
def upload(request):
context = {}
if request.method == 'POST':
uploaded_file = request.FILES['document']
fs = FileSystemStorage()
name = fs.save(uploaded_file.name, uploaded_file)
context['url'] = fs.url(name)
context['filename'] = name
pred, probability = process_image(name)
context['prediction'] = pred
context['probability'] = probability
return render(request, 'blog/foodopedia.html', context)
This is the urls.py of the project
from django.contrib import admin
from django.urls import path, include
from blog import views as blog_views
from django.contrib.auth import views as auth_views
from blog import views as blog_views
urlpatterns = [
path('admin/', admin.site.urls),
path('register/', blog_views.register, name='register'),
path('profile/', blog_views.profile, name='profile'),
path('', include('blog.urls')),
path('login/', auth_views.LoginView.as_view(template_name='blog/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='blog/logout.html'), name='logout'),
]
This is the form.py file:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
You forgot to create a new form in forms.py, then also dont forget to enhance your login view.
You could try using this, adapted from the example in this tutorial:
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import AuthenticationForm
def login(request):
if request.user.is_authenticated:
return redirect('/')
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('/')
else:
form = AuthenticationForm(request.POST)
return render(request, 'blog/login.html', {'form': form, 'title': 'Login'})
else:
form = AuthenticationForm()
return render(request, 'blog/login.html', {'form': form, 'title': 'Login'})
To use that you would have to change the login line in your urls.py to this:
path('login/', blog_views.login, name='login'),

cannot auto create profile when registered new user from link

Problem :
user's profile hasn't be created through "Sign Up" link(new user register) but able to created in only admin page.
view.py
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm
from django.contrib.auth.decorators import login_required
def register_view(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Your account has been created!!!')
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'users/register_users.html', {'form': form})
#login_required
def profile(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST,
request.FILES,
instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request, f'Your account has been updated!!!')
return redirect('profile')
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form': u_form,
'p_form': p_form
}
return render(request, 'users/profile_users.html',context)
model.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='abc.jpg', upload_to='profile_pics')
def __str__(self):
return f'{self.user.username} Profile'
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile
class UserRegisterForm(UserCreationForm):
email = forms.EmailField(max_length=30)
class Meta:
model = User
fields = [
'username',
'email',
'password1',
'password2',
]
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField(max_length=30)
class Meta:
model = User
fields = [
'username',
'email']
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image']
signals.py
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
#receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
#receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
profile_users.html
{% extends 'postorder/base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<div class="media">
<img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
<div class="media-body">
<h2 class="account-heading">{{ user.username }}</h2>
<p class="text-secondary">{{ user.email }}</p>
</div>
</div>
  <form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Profile info!</legend>
{{ u_form|crispy }}
{{ p_form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Update!</button>
</div>
 </form>
</div>
{% endblock content %}
register_users.html
{% extends 'postorder/base_postorder.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">SUBMIT NOW!</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Sign Up!</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">
ALready Have an Account? <a class="ml-2" href="{% url 'login' %}">Sign In!</a>
</small>
</div>
</div>
{% endblock content %}
app.py applied signal
What 's wrong with the code?
Apologize in advance for long code as newbie don't know where is the problem since different approach accumulated.
followed by this video : https://www.youtube.com/watch?v=q4jPR-M0TAQ&t=2292s&list=WL&index=6
Watch this
I think you need to remove form.save() and to ad this code (after if form.is_valid())
views.py
def register_view(request):
....
<your_field_from_registration> = form.cleaned_data.get('<your_field_from_registration>')
user = form.save(commit=False)
user.save()
profile = user.profile
....
profile.<your_field_from_registration> = <your_field_from_registration>
....
profile.save()
....
I had same problem and you have to create a function in apps.py in AppConfig class:
class AccountsConfig(AppConfig):
name = 'accounts'
# for signals.property
def ready(self):
import accounts.signals
Problem solved after adding this script in int.py file , never been thought its need to be edited .
Still helpful if someone can tell the reason.
# _int_.py
default_app_config = 'users.apps.UsersConfig'

django registration form does not save information

I am new to django . here I want to register user and I have a problem whenever the user hit signup button in registration.html nothing happens and when I go to the admin section no user saved so here are my codes
note : all functions and templates works as expected , I think the problem in
UserFormView or urls.py
views.py :
from django.http import Http404
from .models import Category, Item , Order
from django.shortcuts import render, redirect
from django.core.urlresolvers import reverse_lazy
from django.contrib.auth import authenticate , login
from django.views import generic
from django.views.generic import View
from .forms import UsrForm
class IndexView(generic.ListView) :
template_name = 'res/home.html'
context_object_name = 'all_categories'
def get_queryset(self):
return Category.objects.all()
def detail(request, category_name):
try:
category = Category.objects.get(category_title = category_name)
all_categories = Category.objects.all()
items = category.items.all()
except Category.DoesNotExist:
raise Http404("Category does not exist")
return render(request, 'res/menu.html', {'items': items,'all_categories': all_categories})
class UserFormView(View):
form_class = UsrForm
template_name = 'res/registration.html'
def get(self, request):
form = self.form_class(None)
return render(request , self.template_name, {'form' : form})
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
user = authenticate(username=username , password=password)
if user is not None:
if user.is_active:
login(request , user)
return redirect('res')
return render(request, self.template_name, {'form': form})
urls.py :
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.IndexView.as_view() , name='menu'),
url(r'^register/$', views.UserFormView.as_view() , name='register'),
url(r'^(?P<category_name>[a-z]+)/$', views.detail, name='detail'),
]
forms.py :
from django.contrib.auth.models import User
from django import forms
class UsrForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username' , 'email' , 'password' ]
here is registration.py :
{% extends 'res/base.html' %}
{% block section %}
<h2>Sign up</h2>
<form method="post">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}
{% if field.help_text %}
<small style="color: grey">{{ field.help_text }}</small>
{% endif %}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
</p>
{% endfor %}
<button type="submit">Sign up</button>
</form>
{% endblock %}