Skip to content

Commit 710a2f9

Browse files
29 - Register a User via Built-in Model Form
1 parent 4a7577b commit 710a2f9

File tree

4 files changed

+33
-5
lines changed

4 files changed

+33
-5
lines changed

accounts/views.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
from django.contrib.auth import authenticate, login, logout
2+
from django.contrib.auth.forms import UserCreationForm
23
from django.shortcuts import render, redirect
34

5+
def register_view(request):
6+
form = UserCreationForm(request.POST or None)
7+
if form.is_valid():
8+
user_obj = form.save()
9+
return redirect('/login')
10+
context = {"form": form}
11+
return render(request, "accounts/register.html", context)
12+
413
# Create your views here.
514
def login_view(request):
615
if request.method == "POST":
@@ -22,7 +31,4 @@ def logout_view(request):
2231
if request.method == "POST":
2332
logout(request)
2433
return redirect("/login/")
25-
return render(request, "accounts/logout.html", {})
26-
27-
def register_view(request):
28-
return render(request, "accounts/register.html", {})
34+
return render(request, "accounts/logout.html", {})

templates/accounts/login.html

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
</div>
1818
<button type='submit'>Login</button>
1919
</form>
20+
21+
<p>Need an account? Please <a href='/register'>Register</a></p>
2022
</div>
2123
{% else %}
2224
<p>You're already logged in. Would you like to <a href='/logout/'>logout</a>?</p>

templates/accounts/register.html

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{% extends "base.html" %}
2+
3+
4+
{% block content %}
5+
6+
{% if not request.user.is_authenticated %}
7+
<div style='margin-top:30px;'>
8+
<form method='POST'>{% csrf_token %}
9+
{{ form.as_p }}
10+
<button type='submit'>Register</button>
11+
</form>
12+
<p>Already have an account? Please <a href='/login'>Login</a></p>
13+
</div>
14+
{% else %}
15+
<p>You're already logged in and cannot register. Would you like to <a href='/logout/'>logout</a>?</p>
16+
{% endif %}
17+
18+
{% endblock %}

trydjango/urls.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818

1919
from accounts.views import (
2020
login_view,
21-
logout_view
21+
logout_view,
22+
register_view
2223
)
2324
from articles.views import (
2425
article_search_view,
@@ -36,4 +37,5 @@
3637
path('admin/', admin.site.urls),
3738
path('login/', login_view),
3839
path('logout/', logout_view),
40+
path('register/', register_view),
3941
]

0 commit comments

Comments
 (0)