Share
Sign In
TIL 웹개발
TIL 웹개발 - Django 시작하기
서경태
👍
배운대로 써보는 djano 시작하기
기본적인 세팅부터 앱을 등록하는 방법까지 정리해본다.
아래 코드들은 모두 터미널에서 진행된다. 디렉토리를 잘 확인하고 진행해야한다.
1.
가상 환경을 만들어준다.
가상 환경을 만들어주는 이유는 여러 프로젝트를 진행하는 경우 각 프로젝트의 버전을 유지하기 위해서다.
A프로젝트에서 쟝고 3.2를 쓰고 B프로젝트에서 쟝고 4.2를 쓴다면 가상환경만 바꿔주면 문제 없이 작동한다.(고 한다. 안해봄.)
python -m venv venv
2.
Django를 설치한다. 이때 버전은 4.2를 설치하는데 이유는 LTS이기 때문인다.
pip install django==4.2
Django 4.2는 LTS(Long Term Support)다. LTS는 긴 보증 기간을 뜻하는데 안정성을 위해 보통 LTS 버전을 많이 사용한다.
3.
requirements.txt를 생성한다.
requirements.txt에는 설치한 라이브러리의 이름과 버전이 적혀있다.
pip freeze > requirements.txt
다른 사람이 이 프로젝트를 이어서 진행하거나 수정하는 경우 어떤 라이브러리와 버전이 설치되어있는지 확인할 수 있고 이 문서를 통해 바로 설치도 가능하다.
4.
Django 프로젝트 생성하기
django-admin startproject "project name"
"name" 부분에는 따옴표없이 프로젝트의 이름을 넣어준다.
그럼 바로 지정한 이름의 폴더가 생성되고 그 안에 django의 구조가 자동으로 만들어진다.
5.
앱 생성 및 등록
python manage.py startap "app name"
프로젝트 폴더 안에 "app name"으로 폴더가 생성된다. 이제 settings.py를 찾아 그 안에 생성한 앱 이름을 넣어주면 기본세팅이 끝난다.
프로젝트 폴더 안에 같은 이름의 폴더가 하나 더 있다. 그 안에 setting.py가 있다.
# 기본 Django 프로젝트 폴더 구조 myproject/ # 프로젝트 루트 디렉토리 │ ├── manage.py # Django 프로젝트의 관리 스크립트 ├── myproject/ # 프로젝트 폴더 (프로젝트 이름과 동일한 디렉토리) │ ├── __init__.py # 이 디렉토리를 Python 패키지로 인식하게 함 │ ├── settings.py # 프로젝트 설정 파일 │ ├── urls.py # 프로젝트의 URL 라우팅을 정의 │ ├── asgi.py # ASGI 설정 (비동기 서버 게이트웨이 인터페이스) │ └── wsgi.py # WSGI 설정 (웹 서버 게이트웨이 인터페이스) │ ├── app_name/ # 개별 앱 디렉토리 (예: blog, users 등) │ ├── migrations/ # 데이터베이스 마이그레이션 파일을 저장 │ │ └── __init__.py # 마이그레이션 디렉토리 인식 │ ├── __init__.py # 앱을 Python 패키지로 인식하게 함 │ ├── admin.py # Django 관리자 사이트에 앱을 등록하는 파일 │ ├── apps.py # 앱 설정을 관리하는 파일 │ ├── models.py # 데이터베이스 모델을 정의하는 파일 │ ├── tests.py # 앱의 테스트 케이스를 정의하는 파일 │ └── views.py # 앱의 뷰(페이지 로직)를 정의하는 파일 │ └── db.sqlite3
settings.py 안에 둘러보다보면 INSTALLED APPS = [] 가 있다. 이미 여러 가지가 채워져있는데 그 밑에 생서한 앱 이름을 추가하면된다.
Subscribe to 'kyugntae-ai'
Welcome to 'kyugntae-ai'!
By subscribing to my site, you'll be the first to receive notifications and emails about the latest updates, including new posts.
Join SlashPage and subscribe to 'kyugntae-ai'!
Subscribe
👍
Other posts in 'TIL 웹개발'See all
서경태
TIL 웹개발 - Django에서 커스텀 폼 사용하기
Django에서 제공되는 Form을 커스텀해서 사용하는 방법에 대해 알아보자. 회원 정보를 수정하는 페이지를 만들때, 간편하게 UserChangeForm을 사용할 수 있다. 하지만 이 폼에는 아래 이미지처럼 일반 회원이 굳이 접하지 않아도 되는 필드들이 나온다. 그래서 커스텀 폼을 사용해 필요한 내용만 나오도록 조정한다. 먼저 forms.py에서 쟝고에서 제공하는 UserChangeForm을 임포트한다. CustomUserChangeForm을 만들고 ()안에 UserChangeForm을 넣어 상속을 받는다. class Meta: model = get_user_model() 은 모델폼을 만든 것이다. fields를 리스트로 만들어 안에 필요한 내용을 채운다. 코드처럼 이름과 이메일 주소만 기입하도록 설정했다. 처음 이미지와 달리 깔끔하게 필요한 정보만 기입하도록 수정했다.
서경태
TIL 웹개발 - Django쟝고에서 Decorator 데코레이터 사용하기
Django에서 데코레이터는 웹 애플리케이션의 특정 기능을 쉽게 구현할 수 있도록 도와준다. 주로 인증, 권한 관리, 보안, 캐싱 등의 기능을 위해 사용된다. @login_required : 로그인된 사용자만 접근 가능 @permisison_required : 특정 권한이 있는 사용자만 접근 가능 @crsf_exempt : CSRF 검사를 비활성화 @require_http_mothods : 지정된 HTTP 메소드만 허용 @require_POST: POST 요청만 허용 @cache_page: 지정된 시간동안 캐싱하여 출력 성능 향상 @transaction.atomic: 하나의 트랜잭션으로 모든 DB작업 처리 위 데코레이터들은 쟝고에서 주로 사용되는 것들인데 이제 하나씩 알아보자. @login_required 사용자가 로그인하지 않은 상태에서 이 데코레이터가 사용된 뷰에 접근하면 로그인 페이지로 다이렉트를 하는 기능 제공한다. 이렇게 사용하면 my_view에 접근하기 위해 로그인이 필요하고 로그인하지 않은 경우 로그인 페이지로 이동한다. (물론 로그인 페이지가 있는 경우) 이때 두 가지 방법으로 로그인 페이지를 login_required와 연결할 수 있다. 직접 login_url 설정 @login_reqired 데코레이터 함수를 보면 다음과 같이 작성되어 있다. 여기서 login_url = None으로 되어있는데 이 부분을 로그인 페이지로 설정하면 데코레이터가 정상적으로 작동한다. accounts / login.html 설정 쟝고의 기본 설정에 따라 아래 그림처럼 페이지를 구성하면 @login_required를 사용할 수 있다. 로그인 페이지를 accounts 폴더에 위치시키면 쟝고가 알아서 해당 페이지를 리다이렉트해준다. 로그인 후에는 사용하던 페이지의 url을 next 파라미터에 저장해 다시 리다이렉트 해주니 굉장히 편리한 기능이다.
서경태
TIL 웹개발 - Django form 정리
우선 form은 클라이언트가 데이터를 조회하거나 전송할 때 사용하는 태그(tag)다. 게시글을 작성하는 form을 작성하면 아래 코드와 같다. 제목과 내용을 작성해 form형태로 서버에 전달해 처리한다. 이 form 형태를 쉽게 처리하는 기능을 django에서 제공하는데 Django model form이다. 데이터베이스 모델에 대응하는 폼을 자동으로 생성해주는 기능으로 위 코드처럼 별도로 폼을 정의하지 않아도 된다. 그리고 데이터베이스 기준에 따라 (텍스트, 숫자 등) 형식을 맞추지 않을 경우 자동으로 경고 메시지를 보내주기도 한다. Django model form 모델과 폼의 자동 연결 ModelForm을 사용하면, Django 모델에 정의된 필드를 기반으로 자동으로 폼 필드가 생성된다. 예를 들어, 모델에서 Charfield, DateField 등이 있다면, 해당 필드에 맞는 html 폼 필드가 생성된다. 간편한 데이터 처리 모델 폼은 데이터의 유효성을 검사하고, 유효하다면 데이터베이스에 쉽게 저장할 수 있다. form.save() 메소드를 사용하면 폼데이터를 모델 인스턴스로 변환하고 저장할 수 있다. 유효성 검사 모델 폼은 모델에서 정의된 필드의 유효성 검사(예: 최대 길이, 필수 입력 여부)를 자동으로 처리한다. 추가적인 커스텀 유효성 검살르 쉽게 정의할 수 있다. 모델 폼 정의하는 방법 Article 데이터베이스 / models.py 현재 title과 content라는 데이터 베이스가 있는 경우,