Django 2주차 회고
👉 프로젝트 세팅하기
💡 알아야 할 것!
(ORM : 데이터베이스를 하나의 객체로 보며 Class로 표현 및 사용)
👉 app의 model 만들기
#user/models.py
from django.db import models
# Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user"
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
👉 모델을 만든 다음 데이터베이스에 넣기
💡 데이터 베이스(모델)를 만든 후 장고가 인식할 수 있도록 설정해야하며 반영도 별도로 해야한다.
👉 Admin 페이지 접근하기
👉 url - view - template 이어주기
📌 django 프로젝트와 app의 url 연결
📌 app의 url에서 보여줄 화면 views.py에서 작성하기
def 함수명(request):
return render(request, 'app이름/파일명.html')
📌 다시 app의 urls로 가서 이전에서 만든 함수를 불러오고 주소와 적용할 이름을 설정해준다
from django.urls import path
from . import views
urlpatterns = [
path('설정할 주소/', views.함수명, name='적용할 이름'),
]
🔥회원가입 기능 만들기🔥
user앱의 views.py에 로그인을 처리 할 함수(GET,POST)를 만들고 url과 이어준다
signin.html의 form 태그에 속성을 넣는다(form 클래스에 action="/sign-in/" method="post")
👉 {%csrf_token%} ->장고의 기능인 보안설정까지!
form 클래스 내 input 태그에서 로그인에 필요한 정보의 name 값(username, password 등 기억하기) form태그는 name 값을 /sign-in.url로 보내줌
방금 기억한 username,password가 /sign-in으로 전달되기 때문에 user앱의 sign_in_view 함수가 실행된고 메서드의 type을 검사
🔥로그인 기능 만들기🔥
앱의 views.py에서 sign_in_view 함수에 조건문으로 요청 메소드가 post인지 get인지 검사
👉 (post면 httpresponse로 로그인성공 출력 get이면 render로 user/signin.html을 보여줌)
templates에 있는 html 파일에서 form 클래스에 method="post" action="/sign-in"을 입력하고 아래 {%cdrf_token%}입력
💡 POST 요청 시 담아갈 데이터의 input 태그에 있는 name 값을 기억하기!
다시 views.py 파일에서 로그인 함수인 sign_in_view 함수에서 요청 메소드가 POST가 맞다면 request.POST.get('username', None) 입력 / password도 마찬가지!
me = UserModel.objects.get(username=username) 라는 변수를 만들어 조건문으로 me.password와 POST요청에서 받아온 password가 같다면 request.session['user'] = me.username
🚀 (세션에 me.username이라는 것을 user으로 저장한다는 뜻)
코드 색이 왜이래요...?