"2. 장고 프로젝트, 앱 만들기"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
 
(같은 사용자의 중간 판 4개는 보이지 않습니다)
30번째 줄: 30번째 줄:
 
|서버를 돌린 후 <nowiki>http://localhost:8000</nowiki> 으로 들어가 작동이 되는지 확인해본다.
 
|서버를 돌린 후 <nowiki>http://localhost:8000</nowiki> 으로 들어가 작동이 되는지 확인해본다.
 
이게 된다면 기본적인 작동에 대한 문제는 없다.
 
이게 된다면 기본적인 작동에 대한 문제는 없다.
 +
 +
 +
 +
일반적으로 문제없이 잘 되지만, 다음의 에러가 뜨는 경우가 있다.
 +
 +
<code>UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte</code>
 +
 +
원인은 다양하다.
 +
 +
* 컴퓨터 이름에 영어 외의 문자가 포함된 경우.(네트워크명이 한글인 경우. 보통 네트워크명은 컴퓨터 이름을 따라간다.)
 +
* 경로에 영어 외의 문자가 포함된 경우.(한글이 포함되었는데 될 때도 있다.)
 +
* 원인불명 : 장고를 삭제하고 다시 설치하면 되기도 한다.
 +
 
|}
 
|}
 +
 +
=== 커스텀 유저 등록 ===
 +
초보자에겐 어려우니, 실제 서비스를 만들고자 하는 경우가 아니라 장고의 기능을 익히고자 하는 경우라면 무시해도 좋다. 실제 서비스를 만들고자 한다면 서버작동을 확인한 후 가장 먼저 할 일은 커스텀유저 생성이다.(최대한 앱 이름은 다른 앱과 겹치지 않게 상세히 적자.)
 +
 +
[[회원관리 2. 커스텀유저(AbstractUser 이용)|커스텀유저(AbstractUser 이용)]]
 +
 +
일반적으로 본격적인 프로젝트를 시작하기 전에 만들기가 권장된다. 프로젝트 도중에 모델을 바꾸는 것은 DB의 왜래키나 다대다 관계에 영향을 미치는데, 이를 다시 고치는 일은 꽤 어려운 일이기 때문이다.(중간에 커스텀모델을 추가하는 경우엔 DB자체를 지우고, 다시 구성한다.) 장고의 의존성 특성 때문에 최초의 DB에 생성되어 포함되어야 한다.
  
 
=== 관리자 등록 ===
 
=== 관리자 등록 ===
57번째 줄: 77번째 줄:
 
=== 앱 이름은 특이하게 짓기 ===
 
=== 앱 이름은 특이하게 짓기 ===
 
주로 앱 이름을 account나 profile 등으로 만드는 경우가 있는데... 장고와 연동된 라이브러리에서 저런 일반적인 이름을 차지해버리는 경우가 있다. 이렇게 이름이 겹쳐버리면.. 차라리 처음부터 만드는 게 나을 정도로 복잡해진다. 때문에 처음부터 앱 이름을 구체적이고 특이하게 만드는 편이 좋다.
 
주로 앱 이름을 account나 profile 등으로 만드는 경우가 있는데... 장고와 연동된 라이브러리에서 저런 일반적인 이름을 차지해버리는 경우가 있다. 이렇게 이름이 겹쳐버리면.. 차라리 처음부터 만드는 게 나을 정도로 복잡해진다. 때문에 처음부터 앱 이름을 구체적이고 특이하게 만드는 편이 좋다.
 +
 +
==== 앱 이름 바꾸기 ====
 +
나중에 앱 이름을 바꾸려면 각 파일 안의 앱 이름 뿐 아니라 앱 디렉토리 이름도 바꾸어야 하고, DB에도 변형을 가해주어야 한다. 꽤 귀찮고, 무엇보다 미숙하면 DB가 망가질 수도 있는 일이기에 권하지 않는다. 그래도 바꾸어야 한다면..
 +
 +
# 각각의 파일 안에서 사용하는 앱 이름을 새 앱의 이름으로 모두 바꾸고,
 +
# 앱 디렉터리 이름, 파일 이름(migrations 안의 파일들)을 바꾸고,
 +
# DB에서 사용되는 테이블 이름을 모두 바꾸어주어야 한다.
  
 
=== 앱 만들기 과정 ===
 
=== 앱 만들기 과정 ===

2022년 4월 26일 (화) 13:57 기준 최신판

1 프로젝트[편집 | 원본 편집]

1.1 장고 설치[편집 | 원본 편집]

python -m pip install --upgrade pip 으로 pip를 업그레이드 해준 후, pip install django로 설치한다.

1.2 프로젝트 만들기[편집 | 원본 편집]

장고는 프로젝트 안에 여러 개의 앱으로 구성되는 구조이다.

가상환경을 사용한다면 그 이후에 진행하자.

과정 방법 비고
프로젝트 디렉터리 생성 mkdir projectname 프로젝트를 둘 디렉터리를 만들고 그 안에서 다음의 과정을 진행한다.
프로젝트 생성 django-admin startproject config . 프로젝트 디렉터리가 될 곳 안에서 실행('.'은 현재 위치라는 의미.)

config 말고 다른 이름도 가능하지만, 추후에 바꾸기 어렵기 때문에 일반적으로 사용하는 config를 권장한다.

DB생성 python manage.py migrate DB변경사항을 반영하라는 명령이다.
서버작동 python manage.py runserver 서버를 돌린 후 http://localhost:8000 으로 들어가 작동이 되는지 확인해본다.

이게 된다면 기본적인 작동에 대한 문제는 없다.


일반적으로 문제없이 잘 되지만, 다음의 에러가 뜨는 경우가 있다.

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte

원인은 다양하다.

  • 컴퓨터 이름에 영어 외의 문자가 포함된 경우.(네트워크명이 한글인 경우. 보통 네트워크명은 컴퓨터 이름을 따라간다.)
  • 경로에 영어 외의 문자가 포함된 경우.(한글이 포함되었는데 될 때도 있다.)
  • 원인불명 : 장고를 삭제하고 다시 설치하면 되기도 한다.

1.3 커스텀 유저 등록[편집 | 원본 편집]

초보자에겐 어려우니, 실제 서비스를 만들고자 하는 경우가 아니라 장고의 기능을 익히고자 하는 경우라면 무시해도 좋다. 실제 서비스를 만들고자 한다면 서버작동을 확인한 후 가장 먼저 할 일은 커스텀유저 생성이다.(최대한 앱 이름은 다른 앱과 겹치지 않게 상세히 적자.)

커스텀유저(AbstractUser 이용)

일반적으로 본격적인 프로젝트를 시작하기 전에 만들기가 권장된다. 프로젝트 도중에 모델을 바꾸는 것은 DB의 왜래키나 다대다 관계에 영향을 미치는데, 이를 다시 고치는 일은 꽤 어려운 일이기 때문이다.(중간에 커스텀모델을 추가하는 경우엔 DB자체를 지우고, 다시 구성한다.) 장고의 의존성 특성 때문에 최초의 DB에 생성되어 포함되어야 한다.

1.4 관리자 등록[편집 | 원본 편집]

관리자페이지를 이용하기 위해선 관리자로 등록되어 있어야 한다.

과정 방법
관리자등록 python manage.py createsuperuser

이후 안내되는 메시지대로 작성한다.

관리자페이지 도메인주소/admin에 들어가면 관리자페이지가 나온다.


2[편집 | 원본 편집]

일정한 기능들을 모은 것.

2.1 앱을 나누는 이유[편집 | 원본 편집]

다양한 기능들을 분화해서 관리하면 수정에도 편하고, 기능의 관리, 파악에도 편하다.

예컨대, 회원관리 기능을 만들었는데, 다른 프로젝트에서 또다시 회원가입 기능을 만들 땐 단순히 프로젝트 내의 코드를 옮기는 경우가 많았다. 그러나, 앱처럼 모듈화 해두면 필요한 기능을 그냥 통째로 사용하면 된다.

2.2 앱 만들기[편집 | 원본 편집]

2.2.1 앱 이름은 특이하게 짓기[편집 | 원본 편집]

주로 앱 이름을 account나 profile 등으로 만드는 경우가 있는데... 장고와 연동된 라이브러리에서 저런 일반적인 이름을 차지해버리는 경우가 있다. 이렇게 이름이 겹쳐버리면.. 차라리 처음부터 만드는 게 나을 정도로 복잡해진다. 때문에 처음부터 앱 이름을 구체적이고 특이하게 만드는 편이 좋다.

2.2.1.1 앱 이름 바꾸기[편집 | 원본 편집]

나중에 앱 이름을 바꾸려면 각 파일 안의 앱 이름 뿐 아니라 앱 디렉토리 이름도 바꾸어야 하고, DB에도 변형을 가해주어야 한다. 꽤 귀찮고, 무엇보다 미숙하면 DB가 망가질 수도 있는 일이기에 권하지 않는다. 그래도 바꾸어야 한다면..

  1. 각각의 파일 안에서 사용하는 앱 이름을 새 앱의 이름으로 모두 바꾸고,
  2. 앱 디렉터리 이름, 파일 이름(migrations 안의 파일들)을 바꾸고,
  3. DB에서 사용되는 테이블 이름을 모두 바꾸어주어야 한다.

2.2.2 앱 만들기 과정[편집 | 원본 편집]

과정 방법 비고
생성 django-admin startapp 앱이름 프로젝트 디렉터리 안에서 실행.

그냥 단순히 앱 이름의 디렉터리를 만드는 것 뿐. 기존의 앱을 옮겨온다면 그냥 붙여넣기를 하면 된다.

설정클래스 등록 Settings.py에 앱 등록config/settings.py 안에...

INSTALLSED_APPS 항목에 추가한다.

INSTALLSED_APPS 항목 안에 앱이름만 추가해준다. ex)
INSTALLED_APPS = [ 'django.contrib.admin',
                'django.contrib.auth',
                'django.contrib.contenttypes',
                'django.contrib.sessions',
                'django.contrib.messages',
                'django.contrib.staticfiles',
                '앱이름', ]

혹은 앱의 config를 직접 등록해준다. 앱디렉터리의 apps.py 안의 Config를 직접 등록해줘도 된다. 앱.apps.앱이름Config형식으로.

앱 이름이 account라면 account.apps.AccountConfig를 등록한다.

삭제 그냥 단순히 앱 디렉터리를 지우고 settings.py에서 등록한 앱을 지워주면 된다.

이후 MVT를 작성하면 된다.