Django 설치
○ 파일 경로 : dev/Django/Django_create
○ 3.12 가상환경 생성과 가상환경에서 django 설치
py -3.12 -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
pip install django
python -m djnago --version
프로젝트 생성
아래 코드를 통해 장고 기본 프로젝트 생성 가능
django-admin startproject config .
* config 안에는 django 설정 파일이 들어있음
Application 생성
○ 장고에서 App은 시스템 및 DB를 통해 서비스를 제공하는 Web Application
○ APP : model, template, view 포함, 여러 앱이 프로젝트를 구성
○ 프로젝트를 python의 class로 생각하면 App은 function(함수)로 볼 수 있음
○ APP은 재사용성 유/무로 앱 개수 결정 If 재사용성 없음 then 하나의 앱으로 사용
○ APP 생성
* 현재 폴더 안에 manage.py가 있어야함. (즉, 현재 폴더에 들어가 있어야 함)
python manage.py startapp [앱이름]
위와 같이 todolist 앱을 한개 더 생성
python manage.py startapp todolist
애플리케이션 등록
○ setting.py로 이동해 INSTALLED_APPS에 생성한 앱 이름(폴더이름 : todolist, user) 추가
# Application definition
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"todolist",
"user"
]
templates 설정
temlates 폴더 생성 후 해당 폴더 안에 각각의 앱 폴더와 전용 html을 생성
앱마다 하나씩 있어야함(templates/todolist 와 templates/user) + 앱 이름과 동일해야함
settings.py 에서 설정 해주기
config/settings.py 에서 TEMPLATES에 DIRS 부분을 templates(만든 폴더)를 추가
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": ["templates"],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]
각 폴더의 파일(todolist/todolist.html & user/user.html) 연결
각 폴더의 views.py에 아래 코드를 복붙
todolist/views.py & user/views.py
from django.shortcuts import render
# Create your views here.
# urls.py(Controller) -> 처리하는 함수
# -> 화면(Template) & 데이터/DB(Model)을 가져오는 역할
def index(request):
return render(request, "todolist/todolist.html")
각 폴더에 urls.py 추가 및 config/urls.py 수정
○ todolist와 user 폴더에 urls.py를 각각 추가해주기
○ config/urls.py에 import 항목으로 include 추가
from django.urls import path, include
○ urlpatterns를 수정해주기
urlpatterns = [
# localhost가 들어왔을 때 해당 path가 ??/????/???? 형태면 todolist의 urls로 보내줌
# 아래의 적힌 형식의 url 외에는 todolist라는 앱이 처리
path('', include('todolist.urls')),
# localhost가 ??/user/????/??? 면 아래 코드 실행
path('user/', include('user.urls'))
]
각 폴더의 urls.py에서 request와 views.py를 연결해주기
[todolist/urls.py]
from django.urls import path
from .views import index
# app.urls.py -> request랑 view를 연결해주는 역할
urlpatterns = [
# 경로가 localhost이면(뒤에 아무것도 안 쓰면) index 함수 실행
# index 함수 : todolist/todolist 화면으로 실행
path('', index, name="todolist-index")
]
[user/urls.py]
from django.urls import path
from .views import index
urlpatterns = [
# localhost : ??/user/ + '' 이면 index 함수 실행(user/views.py안에 함수)
path('',index, name='user-index')
]
Django Server 열기
* server 전에 발생한 에러
아래의 코드를 통해 해결
python manage.py makemigrations
python manage.py migrate
* 아래 사진의 PATH를 보면 아무것도 없으니까 todolist로 이동함
python manage.py runserver
[문제]
○ localhost:8000/ -> todolist
○ localhost:8000/list -> todolist
○ localhost:8000/user/join -> user
○ localhost:8000/user/login -> user 로 연결되게 하기
○ templates/todolist/list.html , templates/user/join.html, templates/user/login.html 추가
각 파일에 접속했음을 알려주는 코드로 작성
list.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>list.html 입니다.</h1>
</body>
</html>
join.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1> join.html 입니다.</h1>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>login.html 입니다.</h1>
</body>
</html>
○ 각 App의 urls.py에 경로 추가해주기
todolist/urls.py
from django.urls import path
from .views import index, list
# app.urls.py -> request랑 view를 연결해주는 역할
urlpatterns = [
# 경로가 localhost이면(뒤에 아무것도 안 쓰면) index 함수 실행
# index 함수 : todolist/todolist 화면으로 실행
path("", index, name="todolist-index"),
path("list/", list, name="todolist-list")
]
user/urls.py
from django.urls import path
from .views import index, join, login
urlpatterns = [
path("",index, name="user-index"),
path("join/",join, name="user-join"),
path("login/",login, name="user-login")
]
○ 각 App의 views.py 수정
todolist/views.py
from django.shortcuts import render
# Create your views here.
# urls.py(Controller) -> 처리하는 함수
# -> 화면(Template) & 데이터/DB(Model)을 가져오는 역할
def index(request):
return render(request, "todolist/index.html")
def list(request):
return render(request, "todolist/list.html")
user/views.py
from django.shortcuts import render
# Create your views here.
# urls.py(Controller) -> 처리하는 함수
# -> 화면(Template) & 데이터/DB(Model)을 가져오는 역할
def index(request):
return render(request, "user/index.html")
def join(request):
return render(request, "user/join.html")
def login(request):
return render(request, "user/login.html")
Migration(마이그레이션)
○ DB의 스키마를 관리하기 위한 방법
○ DB에서는 스키마, 테이블, 필드 등의 변경 발생 시 지정된 DB에 적용하는 과정
○ DB를 생성하고 모델 생성/변경/삭제 등에 따라 작업 내역 관리 + DB 최신화 가능
python manage.py makemigrations
python manage.py migrate
Mysql DB 연결
○ mysqlclient 설치
pip install mysqlclient
○ settings.py 수정
# MySQL: https://velog.io/@devmin/Django-MySQL-Connect
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "django_db", # 데이터베이스 이름
"USER": "django_root", # mysql 아이디
"PASSWORD": "django_root1!", # mysql 비번
"HOST": "localhost", # host 주소
"PORT": "3306" # 포트
}
}
Django CORS 설치
python -m pip install --upgrade pip
pip install django-cors-headers
Django Rest Framework(DRF)
○ REST API를 위한 프레임워크
○ Django Rest Framework 설치
python -m pip install --upgrade pip
pip install djangorestframework
(기타 내용)
프로젝트 설정
○ setting.py : 장고의 환경설정 관리
* setting.py 파일 설정이 올바르지 않거나, 필요 구성 누락 시 정상 실행 안됨
○ 환경설정에서 DB, 디버그 모드, 허용 가능 호스트, Application 다국어 및 지역시간 설정
'Networks > Django' 카테고리의 다른 글
SK networks AI Camp - 인증&인가 (0) | 2024.08.07 |
---|---|
SK networks AI Camp - Django 실습 (0) | 2024.08.06 |
SK networks AI Camp - Django와 MySQL 연결 (0) | 2024.08.06 |
SK networks AI Camp - Django(admin) (0) | 2024.08.06 |
SK networks AI Camp - Backend&Django (0) | 2024.08.05 |