太傻眼了..
原本打到一半結果突然跳掉阿阿
所以這篇就重打了..
好,這篇要帶大家做會員註冊的功能
我們先設計signup.html
裡的form
<div class="container">
<h1>Register</h1>
<form method="POST" action="/signup/post">
<label>Enter your Name</label>
<input class="form-control" type="text" name="username">
<label>Enter your E-mail</label>
<input class="form-control" type="text" name="email">
<label>Enter your Password</label>
<input class="form-control" type="password" name="password"><br>
{% csrf_token %}
<button class="btn btn-primary btn-block">Submit</button>
</form>
</div>
中間看到一個奇怪的csrf_token
是甚麼呢?
CSRF:https://zh.wikipedia.org/zh-tw/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0
由於網站會對我們做防備,因此在POST Form的時候我們都需要讓它認可
怎麼確定這樣有加到?
我們可以到這個form所屬網頁檢查
藍色那行就是我們剛打的token,它會幫我們送value做驗證
設計完HTML後,要來加上URL位置
這次在urlpatterns裡放上這兩個,post_signup的位置要與你上面的action相呼應
get_signup用來display signup頁面
url(r'^signup$',get_signup),
url(r'^signup/post',post_signup),
阿,要記得import哦
from classes.views import hello_world, index, get_signup, post_signup
如果想改url位置都可以哦,記得每個地方指的一樣就好
首先是signup頁面的View,我們render到signup頁面
def get_signup(request):
return render(request, 'signup.html')
接著就是傳值註冊
在這邊要把form表單裡的值都要傳過來,記得對應 input 裡的name
最後的 if / else 幫忙redirect網頁位址
from django.shortcuts import render, redirect
def post_signup(request):
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
user = User.objects.create_user(username,email,password)
if user:
return redirect('/',locals())
else:
return redirect('/signup',locals())
填入後回到首頁,目前還沒辦法登入,所以到admin去檢查
有看到資料代表成功了!!