TIL(18일차)

김규현·2022년 9월 23일
0

Django 2주차 회고

👉 프로젝트 세팅하기

  • 다음 명령어로 프로젝트의 app을 만들 수 있다.
    명령어 : $ django-admin startapp user
  • app을 만들었다면 django가 인식할 수 있도록 settings.py 파일의 INSTALLED_APPS 리스트 안에 app의 이름을 입력한다.
  • django를 한 번이라도 실행했다면 장고는 settings.py에 있는 DATABASES 라는 정보를 가지고 자동으로 데이터베이스와 연동한다.
    (프로젝트 탐색기에서 db.sqlite3가 생성되었는지 확인!)

💡 알아야 할 것!
(ORM : 데이터베이스를 하나의 객체로 보며 Class로 표현 및 사용)

👉 app의 model 만들기

  • 먼저 model을 만들기 전 어떤 기능들이 필요하고 구현해야 하는지 생각을 먼저 하자!
  • app의 models.py에서 아래 코드와 같이 models를 임포트 하고 class를 생성하여 필요한 기능들을 모델 필드 속성으로 변수 선언을 해준다. (meta는 이 모델의 정보를 담는다 )
#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)

👉 모델을 만든 다음 데이터베이스에 넣기

💡 데이터 베이스(모델)를 만든 후 장고가 인식할 수 있도록 설정해야하며 반영도 별도로 해야한다.

  • python manage.py makemigrations / 변경을 알리는 명령어
  • python manage.py migrate / 변경 된 데이터베이스를 적용시켜주는 명령어
  • database 탭에서 모델의 데이터가 잘 들어갔는지 확인!

👉 Admin 페이지 접근하기

  • python manage.py createsuperuser 명령어를 입력하고 name, email, password를 입력하여 관리자 계정을 생성한다.
  • django 실행 후 http://127.0.0.1:8000/admin 로 접속하면 admin 페이지가 나타난다.
  • app의 admin.py에서 models.py에 있는 만들었던 모델 이름을 임포트 해주고 admin.site.register(UserModel)를 입력하면 모델을 admin에 추가할 수 있다.

👉 url - view - template 이어주기

📌 django 프로젝트와 app의 url 연결

  • url을 연결할 app 폴더에 urls.py 생성 후 프로젝트의 urls.py를 열어 path 옆에 include를 추가로 임포트 해주고 url 패턴에 path('', include('app이름.urls'))를 추가해준다.

📌 app의 url에서 보여줄 화면 views.py에서 작성하기

  • html 파일을 그려줄 render 함수를 임포트하고 아래 코드와 같이 그려줄 html 파일의 이름과 경로를 입력한다.
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으로 저장한다는 뜻)

profile
웹개발 회고록

1개의 댓글

comment-user-thumbnail
2022년 10월 17일

코드 색이 왜이래요...?

답글 달기