django 웹 프로그래밍 강좌 (#0 quick-install)(파이썬 설치, django 설치, 가상환경 세팅)
🏆 파이썬을 설치한 상태에서 아래와 같이 가상 환경을 생성하고 django를 설치한다.$ pyenv virtualenv myenv
$ pyenv local myenv #버전 스위칭
(myenv)$ pip install django #가상 환경에서 django 설치
#...
(myenv)$ python
>> import django #파이썬에서 django가 오류없이 import 되면 성공
django 웹 프로그래밍 강좌 (#1 Django app)(프로젝트 생성, app 생성, 서버 구동, django cycle)
🏆 프로젝트, 앱을 생성하고 URL과 VIEW를 맵핑하여 response를 받아본다.(myenv)$ django-admin startproject mysite
$ python manage.py runserver
$ python manage.py startapp polls
#in views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World.")
#in mysite/polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
#in 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),
]
django 웹 프로그래밍 강좌 (#2-0 git)(git 설치, git 사용법, github 사용법)
🏆 버전 관리 시스템인 git을 설치한다.$ git init
$ git add .
$ git commit -m "first commit"
$ git log
$ git remote add origin [URL]
$ git push origin master
django 웹 프로그래밍 강좌 (#2-1 database)(django model, model 사용법, api 사용)
🏆 Django에서 데이터베이스를 다뤄보자.$ python manage.py migrate
#in 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)
Django의 앱들은 “꼈다뺐다”할 수 있습니다. 앱을 다수의 프로젝트에서 사용할 수 있으며, 앱을 배포할 수도 있습니다. 특정 Django 사이트에 앱들이 묶여있지 않아도 되기 때문입니다.
#in 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',
]
$ python manage.py makemigrations polls
$ python manage.py migrate
$ python manage.py shell
>>> from polls.models import Choice, Question
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now()) #Question 인스턴스를 만들어 튜플로 삽입
>>> q.save() #삽입된 사항을 반영
>>> q.id #output: 1 (django에서 자동으로 만들어주는 field)
>>> q.question_text #output: "What's new?"
>>> Question.objects.all() #output: <QuerySet [<Question: Question object (1)>]>
<QuerySet [<Question: Question object (1)>]>
는 객체를 표현하는데에 별로다.#in 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')
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
>>> from polls.models import Choice, Question
>>> Question.objects.all() #output: <QuerySet [<Question: What's up?>]>
>>> Question.objects.filter(id=1) #output: <QuerySet [<Question: What's up?>]>
🏆 Django admin에 대해서 알아본다.
$ python manage.py createsuperuser
#in poll/admin.py
from django.contrib import admin
from .models import Question
admin.site.register(Question)