- Writing your first Django app의 Part 1~4 따라합니다.
- 코딩의 단위를 기능별로 나누어 Commit 메세지를 작성합니다.
- 새롭게 알게 된 것을 정리합니다.
- Django 의 MTV 패턴을 이해합니다.
- 2023년 3월 25일 토요일
$ django-admin startproject [project_name]
[project_name]/
manage.py
[project_name]/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
$ python manage.py runserver
$ python manage.py runserver 포트번호
$ python manage.py runserver 서버의 IP: 포트번호
$ pip install pymysql
$ pip install mysqlclient
# 연결을 위한 패키지 설정
import pymysql
pymysql.install_as_MySQLdb()
# 개발환경 기준
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "django_study",
'USER': Mysql 계정명,
'PASSWORD': Mysql 비밀번호,
'HOST': '127.0.0.1',
'PORT': 포트번호,
}
}
from django.db import models
# Question 테이블과 question_text, pub_date 속성들 생성
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
INSTALLED_APPS = [
'polls.apps.PollsConfig',
...
]
$ python manage.py makemigrations [app_name]
$ python manage.py migrate
$ python manage.py shell
$ python manage.py createsuperuser
Username: [계정 ID]
mail address: [Email]
Password: ********** Password (again): *********
# [app_name]/admin.py
from django.contrib import admin from .models import Question
admin.site.register(Question)
[project_name]/
[app_name]/
templates/
# app_dir 템플릿 로더 작동하는 방식 때문
/[app_name]
/[template_name].html
...
...
# context => template에 전달할 data
return render(request, '[app_name]/[template_name].html', context)
urlpatterns = [
...
path('/', views.DetailView.as_view(), name='detail'),
...
]
from django.views import generic
# 전달받은 Url의 key 값으로 data가 반영된 template을 불러오기 위해 Model 설정 및 templat_name 설정
class DetailView(generic.DetailView):
model = Question
template_name = 'polls/detail.html'