ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] Django 설치 및 튜토리얼 뽀개기! - 1편
    Web Programming/Django 2023. 3. 1. 17:31
    반응형

    [Django 설치 및 프로젝트 생성]

    1. Django 설치 방법

    python -m pip install Django

     

    2. 'mysite'라는 프로젝트 만들기

    django-admin startproject mysite

    현재 디렉토리 안에 'mysite'라는 디렉토리가 생성되며 구조는 다음과 같음 (디렉토리 구조 보는 명령어: tree /a /f )

     

    3. 프로젝트가 잘 돌아가는지 확인

    manage.py 가 있는 디렉토리에서 아래 명령어 실행

    python manage.py runserver _____ (포트 혹은 서버 IP 바꾸려면 빈칸에 추가하면 됨)

    http://127.0.0.1:8000/ 에 접속하면 아래와 같은 화면이 뜸 => 성공!

     

    [설문조사 앱(App) 만들기]

    manage.py 가 있는 디렉토리에서 아래 명령어 입력해서 설문조사 앱 만들기

    python manage.py startapp polls

    polls 앱이 생성되고 디렉토리 구조는 다음과 같음

     

    mysite/polls/ 안의 views.py에 아래와 같은 코드를 작성

    from django.http import HttpResponse
    
    def indes(request):
        return HttpResponse("Hello, world.")

     

    이 코드를 실행하기 위해서는 mysite/polls/ 안에 urls.py 파일을 생성해야 함

    그리고 아래와 같은 코드 작성

    urls.py 역할은 views.py 내의 함수와 url을 연결해줌

    from django.urls import path
    
    from . import views
    urlpatterns = [
        path('', views.index, name='index')
    ]

     

    mysite/mysite/urls.py을 아래와 같이 추가하여 mysite/polls/urls.py 의 path들이 연결되도록 함

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

     

    Terminal 창에서 아래 명령어를 입력해 서버 실행

    python manage.py runserver

    이후 http://localhost:8000/polls/ 에 접속하면 views.py의 index 함수가 실행된 것을 볼 수 있음

     

    [모델 만들고 활성화]

    데이터베이스 테이블 생성

    python manage.py migrate

     

    mysite/polls/models.py 에 Question, Choice 두 개의 모델 생성

    Django에서 모델은 데이터베이스 구조로 생각하면 됨

    from django.db import models
    
    # Create your models here.
    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)

     

    프로젝트에 polls 앱이 있다는 것을 알려야 함

    mysite/mysite/settings.py 의 INSTALLED_APPS 에 다음과 같이 polls.apps.PollsConfig 추가

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

     

    아래 명령어를 통해 모델 변경사항을 저장

     

    모델과 관련된 테이블 생성

    python manage.py migrate

     

    * 모델을 변경 or 추가하는 단계

    • (models.py 에서) 모델을 변경
    • python manage.py makemigrations => 변경사항에 대한 마이그레이션 생성
    • python manage.py migrate => 변경사항을 데이터베이스에 적용

     

    아래는 좀 더 추가한 mysite/polls/models.py

    import datetime
    
    from django.db import models
    from django.utils import timezone
    
    # Create your models here.
    class Question(models.Model):
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    
        def __str__(self):
            return self.question_text
    
        def was_published_recently(self):
            return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    
    class Choice(models.Model):
        question = models.ForeignKey(Question, on_delete=models.CASCADE)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)
    
        def __str__(self):
            return self.choice_text

     

    [Django 관리자]

    관리자 생성

    python manage.py createsuperuser

     

    관리자 사이트에서 Question 을 관리하도록 하려면 mysite/polls/admin.py 에 아래 코드 추가

    from django.contrib import admin
    from .models import Question
    
    admin.site.register(Question)

     

    반응형

    댓글

Designed by Tistory.