Skip to content

paige0701/django-practice

Repository files navigation

Starting django project

Starting a development server

manage.py 경로에서 실행한다
python manage.py runserver

Serialize models

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)

Connecting to UI !

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

Creating a project < 프로젝트 생성 >

먼저 프로젝트를 만들 폴더를 생성한다

mkdir <folder name>

생성한 폴더 안에서 아래 명령을 실행하여 가상환경을 생성한다. 이름은 주로 venv 로 사용한다.

python -m venv <name> 

가상환경을 설치 한 후 실행한다

source venv/bin/active

가상환경을 실행 한 후 django 를 설치한다

python -m pip install Django

프로젝트를 생성한다. name은 원하는 프로젝트 이름을 고른다. 이름 뒤에 오는 . 은 프로젝트를 현재 디렉토리 안에 생성한다는 뜻이다.

django-admin startproject <name> .

Creating an app < 앱 생성 >

manage.py 경로에서 polls 앱을 생성한다. 앱은 프로젝트안에 있다고 생각했는데 여기서는 poll 이라는 앱을 프로젝트의 상위 모듈이라고 한다며 프로젝트와 같은 경로에 poll 앱을 생성한다. ( 사실 앱을 어느 경로에 생성하던 개발자 마음인것 같음)

아래 명령어로 앱을 생성한다.

python manage.py startapp <name>

Write your first view < View 생성하기 >

[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),
]

Connecting database (데이터베이스 초기 설정)

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