본문 바로가기

Study/django

django 기초 - bootstrap을 이용한 사이트 만들기 : 2. Models, Admin Page로 데이터 관리하기

 - 서버에 등록된 사용자만 접속이 가능한 페이지를 만든다고 가정한다.

 - 처음 main 페이지로 로그인창을 사용하고 로그인 된 사용자만 접속이 가능하다.

 - 그것을 위해 MVT 패턴의 Model - 데이터베이스가 필요하다.

 Model & admin page

# models.py

class BbsUser(models.Model):
    user_id = models.CharField(max_length= 50)
    user_pwd = models.CharField(max_length=50)
    user_name = models.CharField(max_length=50)

    def __str__(self):
        return self.user_id+"\t" + self.user_pwd + "\t" + self.user_name
        
# admin.py

admin.site.register(BbsUser)

 - django에서 models를 통해 ORM을 사용할 수 있다. 

 - models에 데이터를 매핑시킬 class를 생성한다.

 - class로 정의된 내용은 sql의 create 문과 같다고 생각할 수 있다.

 - models에 클래스를 정의한 후, admin.py 에 해당 클래스를 등록시켜줘야 한다.

 - str함수를 override 한 이유는 디버깅 할 때 편리성을 위해서이다.

 - 이후 터미널에서 다음 문장의 실행이 필요하다.

 

> python manage.py makemigrations
> python manage.py migrate

 - makemigrations 는 클래스를 테이블로 만들어주고, migrate는 만들어진 테이블을 반영시킨다.

 - models의 클래스를 의도와 다르게 잘못 정의하면 골치아파진다고 한다. 주의!

 - 터미널에 ok가 뜨면 된다 ! ok!

 - 이제 관리자 계정을 추가해줘야 한다. 터미널에 다음 문장을 추가한다.

> python manage.py createsuperuser

 - 이름(아이디), 이메일, 비밀번호를 차례로 입력해주면 된다.

 - password는 정상적으로 입력되어도 창에 표시되지 않는다. 렉걸렸다고 생각하지말고 천천히 하나씩 제대로 넣는다.

 - 그리고 서버를 구동시키면 127:0.0.1:8000/admin/ 으로 접속이 가능하다.

 - 로그인 창에 방금 만든 아이디와 비밀번호를 입력하면 관리자로 접속할 수 있다.

 - Bbs users로 정상적으로 데이터가 만들어진 것을 확인할 수 있다.

 - 로그인창에서 사용할 목적으로 임의의 사용자데이터를 하나 추가한다. +Add 버튼을 눌러 추가할 수 있다.


 - DBMS 에서 데이터를 저장할 테이블을 만드는 것은 장고에서 models 에 클래스를 정의하는 것과 같다.

 - Makemigrations, Migrate를 통해 데이터 베이스와 클래스를 매핑(연결)시켜준다.

 - 따라서, views에서 변수(객체)에 데이터를 담아낼 수 있다. DBMS에서 Select 해온 데이터를 변수에 저장하는것과 같다

 - html 에서 post , get을 통해 넘겨받은 데이터를 데이터베이스에 저장할 수 있다. save() 함수인데, DBMS에서 update구문과 같다.

 - 같은 방식에서 delete 도 이해할 수 있다. 로그인 페이지를 만들면서 이어간다.