i would like to have both my login form and my registration form on the same page within the same template, so i would like to have them under one view function but i am not too sure on how i can do that, here is my views file
#views.py
def register(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
user = form.save()
username = form.cleaned_data.get('username')
messages.success(request, ' Account was created for ' + username)
return redirect('login')
context = {'form': form}
return render(request, 'register.html', context)
@unauthenticated_user
def loginPage(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('index')
else:
messages.info(request, 'username or password is incorrect')
context = {}
return render(request, 'login.html', context)
You can have:
views.py
...
def RegisterLoginPage(request):
form_register = CreateUserForm(auto_id="register_%s")
form_login = LoginForm(auto_id="login_%s")#You can ignore this if you dont use it'
if request.method=="POST":
form_login = LoginForm(request.POST, auto_id="login_%s")
form_register = CreateUserForm(request.POST,auto_id="register_%s")
if form_login.has_changed() and form_login.is_valid():
##Carry out appropriate function
elif form_register.has_changed() and form_register.is_valid():
##Carry out appropriate function
elif form_login.is_invalid():## the next two elif can be ignored
##
elif form_register.is_invalid():
##
context={
"form_register":form_register
"form_login": form_login#You can ignore this if you dont use it
}
return render(request, "registerlogin.html", context)
registerlogin.html
<form method="POST" action='{% url "registerloginurl" %}'>
{{form_register.as_p}}
{% csrf_token %}
<input type="submit">
</form>
<form method="POST" action='{% url "registerloginurl" %}'>
{{form_login.as_p}}<!-- or however you implement this-->
{% csrf_token %}
<input type="submit">
</form>
The auto_id attribute ensures that conflicting field names do not occur.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.