본문 바로가기

Django

Django 프로젝트

프로젝트 생성 루틴 + git

1. 가상환경 생성

2. 가상환경 활성화

3. Django 설치

4. 의존성 파일 생성 (패키지 설치시마다 진행)

5. .gitignore 파일 생성 (첫 add 전)

6. git 저장소 생성

7. Django 프로젝트 생성

$ python -m venv venv
$ source venv/Scripts/activate
$ pip install django
$ pip freeze > requirements.txt
#프로젝트 생성
$ django-admin startproject firstpjt .
# Django 서버 실행
$ python manage.py runserver

서버 실행후 http://127.0.0.1:8000/ 에서 서버를 볼 수 있음

Design Pattern

소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책

> 애플리케이션의 구조는 이렇게 구성하자라는 관행

MVC Pattern

일반적인 디자인 패턴

Model, View, Controller : 애플리케이션을 구조화하는 대표적인 패턴

> 시작적 요소와 뒤에서 실행되는 로직을 서로 영향없이, 독립적이고 쉽게 유지 보수를 위해 3개를 분리함

MTV Design Pattern

Model, Template, View

Django에서 애플리케이션을 구조화하는 패턴으로, 명칭이 조금 다름

(View -> Template, Controller -> View)

 

Project and App

프로젝트 안에 여러 개의 앱이 있음

ex) app A에는 회원 관련 , app B에는 게시판 관련 등

Django project : 애플리케이션의 집합

- DB 설정, URL 연결, 전체 앱 설정 등을 처리

Django application : 독립적으로 작동하는 기능 단위 모듈

앱 사용

1. 앱 생성

- 앱의 이름은 '복수형'으로 지정하는 것을 권장

2. 앱 등록

- 반드시 앱을 생성한 후에 등록해야함

- project와 별개의 폴더로 생성되기때문에 등록을 해야함

- settings.py에서 앱 추가하기

$ python manage.py startapp articles

프로젝트 구조

- settings.py : 프로젝트의 모든 설정을 관리

- urls.py : 요청 들어오는 URL에 따라 이에 해당하는 적절한 views를 연결

앱 구조

- admin.py : 관리자용 페이지 설정

- models.py : DB와 관련된 Model 정의 , MTV에서 M을 담당

- views.py : HTTP 요청을 처리하고 해당 요청에 대한 응답을 반환 , MTV에서 V를 담당 ; 보통 여기서 대부분의 코드를 작성할것임

요청과 응답

Django의 요청 및 응답

1. URLs

http://127.0.0.1:8000/index/로 요청이 올 때 view 함수 index를 호출

path('index/',views.함수) 식으로 호출 가능

2. View

특정 경로에 있는 template와 request 객체를 결합해 응답 객체를 반환하는 index view 함수 정의

모든 view 함수는 첫번째 인자로 request 요청 객체를 필수적으로 받음

여기서 articles/index.html 은 templates 이후의 경로를 뜻함

render(요청객체, 템플릿경로(,사용데이터)

def index(request):
    return render(request, 'articles/index.html')

 

데이터 흐름에 따라서 코드 작성하기

- URLs > View > Template

데이터 흐름에 따른 코드 작성

결론 규칙

urls.py에서 각 url 경로는 반드시 '/'로 끝남

views.py에서 모든 view 함수는 첫 번째 인자로 요청객체(request)를 받음

Django는 정해진 경로에 있는 template 파일만 읽어올 수 있음 ; app폴더/templates/ 이후

'Django' 카테고리의 다른 글

Authentication System 1  (0) 2024.03.29
Form  (0) 2024.03.27
ORM  (0) 2024.03.25
Template & URLs  (0) 2024.03.13
Intro  (0) 2024.03.12