웹 프레임워크 Django 개념 정리
MVC(Model, View, Control)
: Model에 있는 데이터를 View에 사용자가 원하는 형태로 보여준다. Model과 View를 사용자의 입력에 따라 이벤트에 반응하는 역할을 Controller가 수행
그래서 Django는 무엇인가?
Database와 model을 연결하는 Manager 덕분에,
SQL 쿼리를 작성하지 않아도 데이터를 가공할 수 있다.
Template에 들어가는 html 파일들에서 작성된 폼들은 forms.py에 의해 관리된다.
settings.py
: 프로젝트 환경 설정 파일
- Debug
- Installed_apps
- Middleware_classes : 인증, 보안 관련
- Templates : 실제 뷰
- Databases
- Static_URl : 정적 파일의 URL
manage.py
: 프로젝트 관리 명령어 모음
- startapp - 앱 생성
- runserver - 서버 생성
- createsuperuser - 관리자 생성
- makemigrations app : app의 모델 변경 사항 체크
- migrate - 변경 사항을 DB에 반영
- shell - shell을 통해 데이터 확인
- collectstatic - static 파일을 한 곳에 모음
웹 프레임워크 실습
0. 환경설정
> pip install django #장고 설치해주기
> django-admin startproject tutorial #tutorial이라는 이름의 프로젝트 생성
> python manage.py startapp community #community라는 이름의 앱 디렉토리 생성
여기까지 하면
>tree
를 입력했을 때 다음과 같이 뜨면 정상적으로 프로젝트를 만든 것이다.
> python manage.py migrate #DB 시작
> python manage.py createsuperuser #관리자 생성
> pyhton manage.py runserver
여기까지 입력했을 때 localhost:8000에 서버가 뜨는 것을 알 수 있다.
community라는 앱에서객체를 만들기 위해서는 프로젝트의 settings.py에 앱의 정보를 추가해줘야 한다.
이제 간단한 글쓰기 게시판 글쓰기 기능을 만들어보자!
1. models
> python manage.py makemigrations community
> python manage.py migrate
이렇게 코드까지 입력해주면, 만든 model Article이 db.sqlite3에 저장될 수 있다.
2. URL추가하기
write라는 url에 접근했을 때,
write라는 이름으로 write함수에 접근하기 위한 urlpattern 추가를 해주었다.
이때 community.views에서 왜 import한거지...?
-> community 앱의 view 페이지와 write함수와 연동하기 위해
3. views.py
from django.shortcuts improt render
def write(request):
return render('write.html')
urls.py에서 request 받아온 것을 매개변수로 받고,
'write.html' 파일을 templates 폴더에서 찾아 표시한다.
4. forms.py
이때 'write.html'에서 받아온 정보를 저장하고 싶다면,
forms.py를 community의 하위 디렉터리에 만든 다음
from django forms import ModelForm
from community.models improt *
class Form(ModelForm):
class Meta:
model = Article
fields = ['name', 'title', 'contents', 'url', 'email']
이렇게 article 모델에 대한 Form 클래스를 만들어준다.
그리고
views.py를 다음과 같이 바꾼다.
이렇게 form이라는 이름으로 views에서 넘겨받았을 때,
다음과 같이 작성할 수 있다.
목록 조회, 단일 게시판 조회 기능 구현하기
1.목록 조회
views.py에 아래처럼 List를 불러온 뒤 Article객체의 모든것을 조회한다.
2. 단일 게시판 조회
GET방식으로 게시판의 id값을 불러온 뒤 해당하는 url로 연결하는 것을
views.py에서 수행하면 된당
웅 이렇게
view페이지 뒤에 /<int:num>/
넣어주고, view함수를 view-detail 이라는 이름으로 불러올 수 있다.
그리고 view함수에서 article 이라는 변수에 get 메소드를 사용해 id가 num에 해당하는 객체를 불러온다.
그리고 article이라는 이름으로 넘기면 끝
template.html에서는 다음과 같이 사용하여 조회할 수 있다.
'Framework > Django' 카테고리의 다른 글
MTV패턴에서 MVC패턴으로 아키텍처 변경, 기존 코드의 문제점 분석과 해결책 제시 (0) | 2021.11.04 |
---|---|
파이썬으로 장고(Django) 공략하기 : 입문 (3) Django 폼 (0) | 2021.10.24 |
파이썬으로 장고(Django) 공략하기 : 입문 (2)Django 모델 (0) | 2021.10.24 |
파이썬으로 장고(Django) 공략하기 : 입문 (1)Django 시작하기 (0) | 2021.10.24 |