(二十五) Django - 會員系統(part1)

先來建置註冊的部分。

第一步:models.py

新增Register資料工作表來儲存註冊的帳號及密碼:

1
2
3
class Register(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)

第二部:views.py

用Django提供的Django Form來做一個註冊的表單,首先在mysite/quiz底下新增forms.py,新增內容如下:

1
2
3
4
from django import formsclass
RegisterForm(forms.Form):
username = forms.CharField(max_length=20, required=True)
password = forms.CharField(max_length=20, required=True)

接著回到views.py:

1
2
3
4
5
6
7
8
9
10
from .forms import RegisterForm
def register_create_view(request):
form = RegisterForm(request.POST or None)
if form.is_valid():
Register.objects.create(****form.cleaned_data)
form = RegisterForm
context = {
'form':form
}
return render(request, 'register_create.html', context)

第三步:template

要將表格輸出只要寫’form.as_p’即可,’form.as_p’就是把將表單的每個欄位包裹在一個標籤內,像下面這樣:

1
2
3
<p><label for="id_username">username:</label>
<input id="id_username" type="text" name="username" maxlength="20" required>
</p>

新增register_create.html,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<form method="POST">
{% csrf_token %}
{{ form.as_p}}
<button type="submit">送出</button>
</form>
</body>
</html>

第四步:urls.py

1
2
3
4
5
*quiz/urls.py*
urlpatterns = [
...
path('register_create', views.register_create_view),
]

小結:其實Django的內建APP auth就有提供上述的功能,model跟form都內建好了,使用auth可以替我們免去這些動作。admin網頁裡面有個Users,就是儲存註冊者的資料。

https://ithelp.ithome.com.tw/upload/images/20200926/20129725HooxWYK78t.png