Django Tutorial

Jina·2020년 4월 7일
0

Django

목록 보기
3/11

가상환경 만들고 장고 실행하기
가상환경 설치 방법은 여기서 확인하기

가상환경 만들고 project 만들기

1. 가상환경을 만들고 실행

test1 이라는 가상환경 만들기

conda create -n "test1" python=3.7

가상환경 실행

conda activate "test1"

2. 가상환경에 장고 설치

pip install django

3. project 실행할 디렉토리 만들기

test1 이라는 디렉토리 만들기 (이 디렉토리에서 django 프로젝트 시작할 것)
필수는 아님

mkdir test1

아래의 명령어로 test1 디렉토리로 이동

cd test1

장고 프로젝트 만들기

django-admin startproject 디렉토리명 : 새로운 장고 프로젝트를 만들고, 그 폴더 안으로 들어가라는 명령어

위에서 만든 test1 디렉토리 내부에서 장고 프로젝트를 만들 것
장고 프로젝트명은 mysite

django-admin startproject mysite

tree라는 명령어를 이용하면 디렉토리 내부의 구조를 확인할 수 있음
mysite의 구조를 확인해보면 아래와 같음

.
└── mysite
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

manage.py

사이트 관리를 도와주는 역할
manage.py를 이용하여 다른 설치 작업 없이 컴퓨터에서 웹 서버를 시작할 수 있음

settings.py

웹사이트 설정이 있는 파일

urls.py

현재 Django project 의 URL 선언을 저장
Django 로 작성된 사이트의 "목차"를 의미

서버 동작확인

my site 디렉토리로 이동

cd mysite

my site에서 manage.py을 실행

실행은 아래의 명령어 이용

python manage.py runserver

설문조사 앱 만들기

Django APP

Django App은 Django에서 사용하는 파이썬 패키지
Django App 패키지는 그 안에 자신의 모델(model), 뷰(view), 템플릿(template), URL 매핑 등을 독자적으로 가지고 있음
일반적으로 하나의 Django 프로젝트는 하나 이상의 Django App으로 구성되어 있음

python manage.py startapp 애플리케이션명 : 새로운 장고 App을 생성하는 명령어

python manage.py startapp polls

위의 명령어로 polls라는 app을 생성
tree를 보면 아래와 같이 나타남

.
├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── settings.cpython-37.pyc
│   │   ├── urls.cpython-37.pyc
│   │   └── wsgi.cpython-37.pyc
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── polls
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

views.py

polls 디렉토리 안의 views.py에서 작업

cd polls

위의 명령어를 이용하여 polls 디렉토리로 이동하고
아래의 명령어로 views.py를 열고 수정할 수 있음

vim views.py

views.py에 아래의 내용을 입력

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

HttpResponse

HttpRequest와 짝을 이루며 response를 반환

views.py 내의 함수

함수의 인자(request)로 HttpRequest 객체를 받아옴
그 후 HttpResponse를 return함


urls.py

polls/urls.py

polls 디렉토리에 URL의 내용을 담을 수 있는 파일인 urls.py를 생성하고 아래의 내용 추가

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

mysite/urls.py

mysite 디렉토리의 urls.py에 아래의 내용 추가

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

이후에 서버를 실행하면 polls 페이지와 admin 페이지를 확인할 수 있음


models.py

polls/models.py

아래의 내용 추가

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

여기서 CharField, IntegerField, DateTimeField 등은 데이터베이스의 필드


App 추가

여태까지 mysite라는 프로젝트를 만들었고 그 프로젝트 내부에 polls라는 app을 새로 만들었음
이 app을 현재의 프로젝트(mysite)에 추가 시켜주어야 만들었던 앱이 프로젝트에 포함됨
이는 settings.py에서 진행할 수 있음

settings.py

mysite의 settings.py에는 아래의 내용이 포함되어있음

 INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
 ]

이곳이 바로 app을 추가하는 부분

여기에 polls app을 추가하면 아래와 같음

INSTALLED_APPS = [
    'polls.apps.PollsConfig',		# 추가한 app
    'django.contrib.admin',		
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

makemigrations

아래의 명령어 이용하여 migrations 생성

python manage.py makemigrations polls

새로운 모델을 만든 것(변경사항)을 감지하여 새로운 migration을 만들라는 의미

admin

관리자 생성

관리 사이트(admin)에 접속할 수 있는 사용자를 만들기

아래와 같은 명령으로 만들 수 있음

python manage.py createsuperuser

이후 username과 email, password등을 설정함
아래와 같이 설정할 수 있음

Username: admin
Email address: admin@example.com
Password: **********
Password (again): *********

0개의 댓글