아직까지 장고의 정확한 기능과 사용법을 알지 못해 이전에 했던 repl.it 장고 내용을
참고하여 진행하였습니다.
> cd /home/soheon-lee/Django_test # 내 프로젝트 만들 디렉토리
django-admin startproject project_westagram #project_westagram 디렉토리 생성
project_westagram
├── views.py
└── migrations
| └── init.py
├── models.py
├── settings.py
├── urls.py
db.sqlite3.py
위의 구조가 장고 파일의 기본 구조입니다.
개발 서버 작동하기
cd project_westagram # project_westagram 디렉토리
python manage.py runserver # ./manage.py runserver도 됨
erforming system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
8월 03, 2020 - 15:50:53
Django version 3.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
서버를 활성화한 뒤 브라우저에 http://127.0.0.1:8000/ 입력해서 접속. 아래와 같이 뜨면 성공
$ python manage.py startapp account/user
account/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py
내 앱의 첫번째 뼈대가 완성되었다. 지금부터 해야할 작업은 다음과 같다.
**
- Project에 내 app 등록하기
- 뷰 작성하기
- URL 연결하기
- 데이터베이스 만들기
- 모델 만들기 + 데이터베이스에 연결하기**
project_westagram/settings.py
INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'account', ]
account/views.py
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
뷰만 만든다고 화면이 보이는 것이 아니라, 이 뷰를 호출하려면 이와 연결된 URL이 있어야 한다.
뷰를 호출하려면 ← 이와 연결된 URL이 있어야 함 ← 이를 위해 URLconf가 사용됨 ← polls 디렉토리에서 URLconf를 생성하려면 urls.py 파일 생성해야함 (vim urls.py)
즉, view에 맞는 각각의 url이 있어야하고, 그 url은 account/urls.py 에서 만든다!
account/urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
urls 모듈을 만든 것이 된다. 이 모듈은 account의 개인 모듈이고, 이를 최상위(project_westagram)에서 바라보게끔 (참고하도록) 만들어야 한다.
project_westagram/urls.py
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
project_westagram.urls.py 에다가 account.urls.py를 include( ) 했기 때문에, polls.urls 내부에 있는 index 뷰가 URLconf에 연결됐다고 이해하면 된다.
/project_westagram 경로에서
python manage.py runserver # 서버가 구동됨.
project_westgram 아래 명령어 실행
/manage.py migrate
아래와 같이 나오면 성공
migrate
명령어는 /mysite/settings.py 파일 내부에 있는 INSTALLED_APPS 를 보고 필요한 데이터 베이스를 생성하거나, 수정사항을 저장하는 역할을 한다. 즉, 이 명령을 실행한 후라면, 필요한 데이터 베이스의 기본 구조가 만들어졌다고 이해하면 된다.
모델은 개발자가 저장하는 데이터의 필수적인 필드들과 동작들을 갖고 있다. 이 설문조사 app 에는 크게 두 모델을 포함시킬 것인데, Question
과 Choice
이다. 각 모델은 클래스 형태로 표현하면 된다.
from django.db import models class Users(models.Model): name = models.CharField(max_length = 50) email = models.CharField(max_length = 50) password = models.CharField(max_length = 300) created_at = models.DateTimeField(auto_now_add = True) updated_at = models.DateTimeField(auto_now = True)
모델 활성화하기
활성화 하기 전 해야하는 것 makemigrations
라는 명령어로 내가 모델을 변경시킨 사실 (또는 생성했다는 사실)과 이 변경사항을 migration으로 저장시키고 싶다는 것을 Django에게 알려주는 것이다.
python manage.py makemigrations account
아래와 같이 뜨면 성공
그 다음은 migrate 명령어로 데이터베이스에 모델과 관련된 테이블을 생성한다
python manage.py migrate