python manage.py runserver
djangoPractice/settings.py add rest_framework
INSTALLED_APPS = [
'rest_framework'
]
polls/serializers.py Create serialize class
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = "__all__"
polls/views.py Serialize django models with Serializer!!
def index(request):
latest_question_list = Question.objects.filter().order_by('-pub_date')[:5]
serializer = QuestionSerializer(latest_question_list, many=True)
return JsonResponse(serializer.data, safe=False)
install necessary package
pip install django-cors-headers
in settings.py add corsheaders, need to add middleware class to listen in on responses
INSTALLED_APPS = [
'corsheaders'
]
MIDDLEWARE = [
'django.middleware.common.CommonMiddleware',
'corsheaders.middleware.CorsMiddleware'
]
CORS_ORIGIN_ALLOW_ALL = True
먼저 프로젝트를 만들 폴더를 생성한다
mkdir <folder name>
생성한 폴더 안에서 아래 명령을 실행하여 가상환경을 생성한다. 이름은 주로 venv 로 사용한다.
python -m venv <name>
가상환경을 설치 한 후 실행한다
source venv/bin/active
가상환경을 실행 한 후 django 를 설치한다
python -m pip install Django
프로젝트를 생성한다. name은 원하는 프로젝트 이름을 고른다. 이름 뒤에 오는 . 은 프로젝트를 현재 디렉토리 안에 생성한다는 뜻이다.
django-admin startproject <name> .
manage.py 경로에서 polls 앱을 생성한다. 앱은 프로젝트안에 있다고 생각했는데 여기서는 poll 이라는 앱을 프로젝트의 상위 모듈이라고 한다며 프로젝트와 같은 경로에 poll 앱을 생성한다. ( 사실 앱을 어느 경로에 생성하던 개발자 마음인것 같음)
아래 명령어로 앱을 생성한다.
python manage.py startapp <name>
[http://127.0.0.1:8000/polls/] 라는 url 을 생성하려면 어떻게 해야하나?
이건 poll 앱의 Home 을 얘기한다. polls/views.py 에서 index page 를 생성한다.
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, world. You are at the poll index')
polls/urls.py 에 url 를 추가한다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
djangoPractice/urls.py 에서 poll 앱의 url 를 추가한다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
mysql 사용시 mysqlclient 설치 필요
pip install mysqlclient
mysql 사용시, user 이름이 root, 비밀번호가 root 인 계정으로 mysql 을 실행 하겠다는 뜻 터미널에서 아래 명령어 실행
mysql -uroot -proot
mysql user 생성 username : django, password: django
CREATE USER 'django'@'localhost' INDENTIFIED BY 'django';
유저를 생성 직후에는 아무 권한이 없다. 권한을 줘야한다.
GRANT ALL PRIVILEGES ON * . * TO 'django'@'localhost';
FLUSH PRIVILEGES;
데이터베이스 조회
show databases;
데이터베이스 생성
create database <name> character set utf8;
grant all privileges on django_practice.* TO django@localhost identified by 'django';
grant all privileges on django_practice.* TO django@'%' identified by 'django';
flush privileges;
Quit mysql and log back in with new user
quit
mysql -udjango -pdjango
데이터베이스 연결 djangoPractice/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_practice',
'USER': 'django',
'PASSWORD': 'django',
'HOST':'localhost'
}
}
create tables
python manage.py migrate
check if tables are created
mysql -udjango -pdjango;
show databases;
use django_practice;
show tables;
create Models yourself (직접 테이블 생성하기) polls/models.py 참고
polls 앱을 사용할것이라고 djangoPractice/settings.py 에 선언해야 한다.
models.py 에 변경된 부분을 miragtion 으로 보관(?) 하겠다는 것이다. migration 정보는 polls/migrations 아래 저장되며 git에 올려서 협업하는데 사용한다(?) 데이터베이스 변경 히스토리 조작/추적 가능해서 이렇게 makemigrations/migrate 명령을 따로 두는것 같음
python manage.py makemigrations
migrate 를 해야 변경된 부분이 데이터베이스에 반영된다.
python manage.py migrate