이것 또한 기업 요건을 보니 Django를 사용해본 인재를 많이 뽑길래(?) flask와 함께 보게 되었습니다.
마감에 쫓기는 완벽주의자를 위한 웹 프레임워크
여기서 웹 프레임워크란?
로그인, 세션처리, 쿠키 등의 기능을 직접 만들지 않고 딸깍으로 사용하게 해주는 것
가상환경을 만들어서 그 위에서 장고가 돌아가게 만들었습니다.
mkdir venvs
cd venvs
python3 -m venv mysite
source mysite/bin/activate
pip install django
cd ..
mkdir blog
cd blog
django-admin startproject config .
python3 manage.py runserver
django-admin startproject config . => 장고프로젝트와 어플리케이션 관리 도구입니다.
python3 manage.py runserver => 개발 서버를 실행하는 명렁어입니다.
즉 가상환경을 만들고 내가 원하는 위치에 Django프로젝트를 만든 후 개발서버를 실행시켰습니다.
Django는 프로젝트 내부에 여러개의 앱을 설치할 수 있는데
여기서 앱은 각각의 특정 기능 또는 로직을 처리하는 독립 모듈입니다
블로그, 인증시스템, 투표를 각각의 앱으로 만들 수 있습니다
여기서는 pybo라는 앱을 만들기로 했습니다.
django-admin startapp pybo
이러면 일단 blog/pybo라는 앱이 만들어집니다.
이제 urls.py에 설정을 해서 해당 url이 들어오면 pybo에서 요청을 처리해주면 됩니다
이게 헷갈릴 수 있으니 정확히 알고 가기!!
blog/config/urls.py
1. 일단 먼저 config내 urls.py에 pybo를 포함시킵니다
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', include('pybo.urls))
]
blog/pybo/urls.py
2. 이제 pybo에 해당 urls.py를 만들어 준 뒤 여기서 127.0.0.0.1:8000/pybo로 들어오면 보여줄 view를 지정합니다!
from django.urls import path
from . import views
urlpatterns = [
path('', views.index)
]
blog/pybo/views.py
3. 이제 해당 index함수를 만들고 url 요청이 들어오면 응답을 반환합니다
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("안녕하세요 pybo에 오신것을 환영합니다!")

요근래 이거 없는(?) 웹프레임워크가 없는거 같다 -> 바로 ORM
쉽게 말해서 SQL로 DB를 만드는게 아니라 모델만 작성하면 DB에 작성이 되는 것!
그러기 위해서는 몇가지 단계가 있는데 이것도 정확히 알고 가야한다!!
현재 모델에 적힌 내용을 데이터베이스에 반영 기본은 SQLite3를 사용
from django.db import models
class Question(models.Model):
subject = models.CharField(max_length=200)
content = models.TextField()
create_date = models.DateTimeField()
def __str__(self):
return self.subject
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
content = models.TextField()
create_date = models.DateTimeField()
INSTALLED_APPS = [
'pybo.apps.PyboConfig', # 이걸 작성함!
'django.contrib.admin',
....
]
SQL의 desc 테이블; 이것처럼 현재 sqlite3에 테이블이 제대로 올라갔는지 확인하는 방법이 있습니다.
python3 manage.py sqlmigrate pybo 0001

이제 파이썬 쉘에서 직접 데이터 추가 및 수정을 해보자!
python3 manage.py shell -> 파이썬 쉘로 들어감
>> from pybo.models import Question, Answer
>> from django.utils import timezone
>> Question.objects.all() -> 전체 데이터 확인
>> q = Question(subject="django??", content="djange what is it?", create_date=timezone.now())
>> q.save() -> insert됨
>> Question.objects.filter(id=1) # 이건 없어도 오류는 안남
>> Question.objects.get(id=1) # 이건 무조건 1개 반환이라 없으면 오류
# 이게 수정하는 법
>> q = Question.objects.get(id=1)
>> q.subject = "ddjango??"
>> q.save()
# 이게 삭제
>> q = Question.objects.get(id=2)
>> q.delete()
# Answer 데이터 추가
>> q = Question.objects.get(id=1)
>> a = Answer(question=q, content="자동생성", create_date=timezone.now())
>> a.save()
# 질문에 연결된 답들 보기
>> q.answer_set.all()