728x90

미리보는 프로젝트 완성코드 -->https://github.com/leeceo97/python_community

 

1. 프로젝트/ 앱 생성

일단 django를 사용하기 위해서는 가상환경폴더에 django를 인스톨 해줘야 한다. 

터미널 창에 pip install django를 입력하여 django를 설치해준후

django-admin startproject community . 을 입력하여 프로젝트 폴더를 생성해준다.

여기서 뒤에 붙은 .은 앞으로 우리가 생성될 manage.py를 사용하여 데이터베이스에 적용및 여러 조작명령어를 사용할껀데 manage.py와 프로젝트 폴더를 루트 폴더에 위치 시키겠다는 이야기다. 

생성된 community폴더에는 

위와 같이 구성이 되어있을껀데 여기서 우리가 주로 사용한 파일명은 settings.py와 urls.py이다.

간단히 말해 settings.py는 우리가 앞으로 설치할 앱이나 추가적인 설치파일 관리 및 데이터베이스 템플릿폴더등 프로젝트 전반에 걸쳐 설정하는데 관여할것이고 urls.py는 프로젝트 전체의 url을 관리해준다 생각하면 된다.

 

이제는 실질적인 기능을 할 앱들을 만들어 주면된다. 우리는 크게 2가지 앱을 생성할것이다. 유저의 회원가입, 로그인, 권한등을 관리할 accounts앱, 게시판 기능을할 boards앱을 만들어준다.

python manage.py startapp accounts

python manage.py startapp boards

를 입력하여 앱을 생성해준다.(주의할점: manage.py를 사용하기위해 터미널창에서 현재 위치에 manage.py가 위치하여야 한다.)

그럼 위와 같이 폴더가 구성 되어있을것이다.

앱을 생성한 이후엔 community/settings.py에 들어가 INSTALLDE_APPS에 생성한 앱을 반드시 등록해줘야 합니다.

사실 초기에 settings.py에 초기설저엔 SECRET_KEY 숨기기, 데이터베이스,시간 설정과 같은 작업들을 해줘야 이번 프로젝트는 튜토리얼 단계이므로 건너뛰고 다음에 해보도록 하겠습니다.

 

2. accounts모델 생성

Accounts/models.py에 들어가 아래와 같이 작성해준다.

from django.db import models

class User(models.Model):  # 1
    username = models.CharField(max_length=64)
    useremail = models.EmailField(max_length=64)
    password = models.CharField(max_length=64)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self): # 2
        return self.username

    class Meta: # 3
        db_table = 'community_user'
        verbose_name = '커뮤니티 사용자'
        verbose_name_plural = '커뮤니티 사용자'

위에서 부터 차근차근 설명하면 

# 1부분은 전형적인 python 클래스 선언문으로 User라는 이름의 클래스를 선언한후

유저의 이름이 들어갈 username은 charfield로, 유저의 이메일 즉 아이디로 사용할 useremail은 emailfield등으로 설정한 것이고 created_at는 생성한 시간으로 datetimefield를 썻다. 나머지는 알것이라 생각 되고 DateTimeField부분의 auto_now_add=True의 뜻은 유저가 생성된 바로 그시간에 저장됨을 나타낸다. 보통 사용되는 auto_now=True같은 경우는 수정된 시간을 나타내는 것으로 이후 우리가 boards모델을 작성할때 쓰이게 될것입니다. 간단히 말하면, auto_now_add는 최초 생성한 시간을 auto_now는 모델이 save될때마다 변경되는 시간이라고 알면 될것입니다.

 

# 2부분은 이후 들어가볼 admin페이지에서 새로운 유저가 등록될때마다 User object(1)과 같이 원래 유저를 표시하는데

# 2부분을 추가할 경우, 생성된 유저의 username으로 바뀌어 나옴을 알수 있을겁니다. 제대로 이해가 가지 않는다면 처음엔 지우고 어드민 페이지에 들어가 확인을 해본후 설정하고 확인을 해보시면 확실히 알수 있을겁니다.

 

# 3부분은 등록된 데이터베이스의 테이블 명을 설정해주고 verbose_name은 가시적으로 표시될 어드민페이지의 이름명을 커뮤니티 사용자라고 입혀준것이고 plural은 복수형으로 나타날 이름을 커뮤니티 사용자로 통합해준거라고 생각하시면 됩니다.

 

3. accounts 모델 적용

데이터베이스에 이제 테이블을 생성해준다고 생각하면 된다. 명령어로는

1. python manage.py makemigrations accounts

2. python manage.py migrate accounts

3. python manage.py migrate

위의 순서대로 하나씩 해주면된다. 

1번의 경우, accounts/models.py에 저장한 모델을 등록전 테이블 양식을 생성해주는것이다.

2번의 경우, 생성해준 테이블양식을 적용하는절차이다.

3번의 경우, 앱의 모델이 아닌 전에 설정한 settings.py와 그 외의 데이터베이스에 들어갈 변경사항을 적용시키는 절차입니다.

 

4. 관리자 계정 생성 및 어드민페이지 등록

터미널창에 python manage.py createsuperuser 를 입력후 절차에 따라 관리자 계정을 생성해줍니다.

이후에 accounts/admin.py에 들어가서

from django.contrib import admin
from .models import User

admin.site.register(User)

위와 같이 입력해줍니다. 간단히 말해 .models -> 현재 폴더내의 models파일로부터 User클래스를 임포트 해와서

사이트를 등록해준다는걸 의미합니다. 

 

python manage.py runserver 명령어를 통해 서버를 활성화 시킨후 http://127.0.0.1:8000/ 주소로 접속하면 

위와 같이 접속이 가능하고 http://127.0.0.1:8000/admin 주소로 이동후 전에 등록한 관리자 계정으로 로그인하면

위와 같이 나오는것을 알수 있습니다. 

 

5. 마무리 멘트

이번 챕터에서의 과정은 앞으로 수많은 프로젝트를 실행할때 필연적으로 사용되는 방식이기때문에 이번 챕터는 반드시 알아 갔으면 좋겠습니다. 명령어들이야 여러번 사용하다보면 자연스럽게 외워 지겠지만 어떻게 작동하는지에 대한 부분은 숙지 하셔야 합니다. 특히 2번 모델 필드 같은경우는 아래의 사이트에 가면 이번에 사용된것 이외에도 설명이 잘나와 있으니 참고하셔도 좋을것 같습니다! 감사합니다:)

 

Django 모델의 필드

장고의 모델(db)에는 다양한 필드가 존재한다ID(pk)로 사용 가능한 자동으로 증가하는 IntegerField다. 직접 사용할 필요는 없다. 모델의 기본키 필드는 별도로 지정하지 않으면 자동으로 추가됨.AutoFi

velog.io

 

728x90

+ Recent posts