登録、ログイン、ログアウト

9872 ワード

登録、ログイン、ログアウト
本明細書で提供する関数の使用
1) views.pyへの会員加入関数、ログイン関数、ログアウト関数のインポート
from django.contriv.auth.models import User
from django.contrib import auth
2)会員の追加(会員加入)
User.objects.create_user()
create_user(usernmae,password)
3)ログイン
auth.authenticate() # 등록된 회원인지 확인
auth.login(request, user) # 로그인
4)ログアウト
auth.logout(request) # 로그아웃
実習
1)Accountsアプリケーションを作成して設定します.pyに登録
2)accountsにテンプレートフォルダを作成してログインします.html, signup.htmlファイルの生成
3)アカウントのURL.pyを作成し、includeを使用してURLを管理
from . import views

urlpatterns = [
	path('signup/', views.signup, name='signup'),
    path('login/', views.login, name='login'),
    path('logout/', views.logout, name='logout'),
]
4) signup.html, login.html
<form method="POST" action="{% url 'signup'%}">
	{% csrf_token %} # 보안을 위한 것
	
5) views.py
from django.contrib.auth.models import User
from dhango.contrib import auth

def signup(request):
	if request.method == 'POST': # 회원가입을 누르고 전송했다면(form의 method가 POST방식이었기 때문)
    	if request.POST['password1'] == request.POST['password2']: # 비밀번호 확인으로 두번째 입력한 비밀번호가 첫번째와 같다면
            user = Usert.objects.create_user(username=request.POST['username'], password=request.POST['password1']
            # 회원추가, form의 username을 usename이라는 변수에 담는다. (비밀번호도 마찬가지)
            auth.login(request, user) # 로그인, user는 바로 윗줄의 user이다.
            return redirect('home')
     return render(request, 'signup.html') # 아니라면 signup.html에 계속 머문다
     
def login(request):
	if request.ethod == 'POST':
    	username = request.POST.['username']
        password = request.POST.['password']
        user = auth.authenticate(request, username=username, password=password) # 등록된 회원인지 확인
        if user is not None: # 이미 존재하는 회원이라면
        	auth.login(request, user) # 로그인
            return redurect('home')
        else:
        	return render(request, 'login.html', {'error':'username or password is incorrect.'}) # 에러
    else:
    	return render(request, 'login.html')
        
def logout(request):
	if request.method == 'POST':
    	auth.logout(request)
        return redirect('home')
    return render(request, 'login.html')
7) base.html
<a href="{% url 'signup' %}"> 회원가입 </a>
<a href="{% url 'login' %}"> 로그인 </a>
<a href="{% url 'logout' %}"> 로그아웃 </a>
    
http method
  • GET(データ照会)、POST(データ生成)、PUT(データ修正)、DELETE(データ削除)
  • .
  • メソッドが指定されていない場合、GET方式.だからお願いします.GET["xxx"]を使用してフォーム値
  • を入力
  • GET方式でデータを送信受信と、URLにデータ
  • が表示される.
  • URLは、直接情報漏洩のないPOSTメソッド
  • が必要である.