-
[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)
반응형'Web Programming > Django' 카테고리의 다른 글
[Django] Pythonanywhere 사용하여 웹 호스팅하기 (0) 2021.06.19 [Django] AJAX 사용해서 데이터 주고 받기 (2) 2021.06.13