티스토리 뷰
장고에 대해서 배우기 시작했다. 넘 어렵다.
왜냐면 MTV 패턴에 익숙해지려하면 헷갈리고 알만 하면 또 어려운게 나타난다 ;;
강의를 들을 때에는 이해되는 것들이 나중에 가면 헷갈리고 도로아미타불이어서 이렇게 포스팅하면 그래도 나중에 찾아보기도 쉽고, 조금 더 기억에 오래 남기도 해서 좋은 것 같다. 물론 넘나리 귀찮지만..
굉장히 기초적인 부분이고 기억하기 쉽게 적어놨기 때문에, 생략된 파일이나 설명이 있을 수 있습니다.
강의를 통해 배운 것들을 스스로 정리하기 위한 포스팅이므로 오류나 잘못된 설명이 있을 수 있습니다.
틀린 것이 있다면, 댓글을 통해 알려주세욤..
MTV (Models, Templates, Views)
나의 경우에는 하나의 간단한 페이지를 만들고 해당 프로젝트의 이름은 community로 한다.
이 페이지를 완성하기 위해서는 user영역, board 영역이 추가된다. 이런 영역들을 application이라 한다.
이런 앱을 추가할 때에는 커맨드창 혹은 터미널 창에 "python manage.py startapp 이름 "실행
community ㄴ community ㄴ settings.py ㄴ urls.py ㄴ board ㄴ models.py ㄴ urls.py ㄴ migrations ㄴ templates ㄴ board_list.html ㄴ board_write.html ㄴ user ㄴ models.py ㄴ urls.py ㄴ migrations ㄴ templates |
- settings.py
community 프로젝트의 전체적인 설정값들을 정의하는 파일..
INSTALLED_APPS 리스트에 추가한 app들 board, user 를 추가해야한다.
- urls.py
주소값의 이동? url 이동 경로를 정의?
메인 주소 뒤로 입력되는 하위 디렉토리? 가 추가될 때 어떤 행동을 취해야하는지 나와있다.
만약에 127.0.0.xxxx/board/list/를 통해 게시판 목록 페이지로 이동하는 경우에
1. community > urls.py 파일로 들어와서 board 에 해당하는 path를 찾는다.
2. board 가 입력되었을 때 board 라는 이름을 가진 app으로 간다.
3. board > urls.py로 들어와서 list 라는 이름을 가진 path를 찾는다.
4. list 가 입력되었을 때, 해당 디렉토리 내의 views.py로 들어가서 board_list라는 함수로 들어간다.
그래서 이 때, views 라는 파일을 import 해줘야한다.
다음과 같은 4단계로 진행된다.
[ community > urls.py ] from django.contrib import admin from django.urls import path,include
urlpatterns = [ path('board/', include('board.urls')) ] |
[ board > urls.py ] from django.urls import path from. import views
urlpatterns = [ path('list/', views.board_list), ] |
- views.py
사실상 비즈니스 로직을 구현하는 곳.. 실질적인 개발 ? 함수가 구현되는 곳?
최종적으로 사용자에게 보여지는 부분을 구현
views.py 파일은 templates 폴더를 바라보고 있기 때문에 해당 경로에서 파일을 찾는다.
그렇게 때문에 template 안되고 무조건 templates !!!!
처음 배울 때, templetes 라고 잘못썼다가 오류 때문에 한참을 헤맸다... ㅠ
위의 4 단계에 이어서 설명을 이어가자면, 최종적으로는 views.py 파일로 들어가서 board_list 함수를 실행한다.
board_list 라는 함수에서는 templates 폴더에서 해당하는 board_list.html 파일로 연결해준다.
해당 html 파일로 넘어가기 전에 게시판 페이지 번호 등의 정보가 필요한 경우에는, 필요한 값들을 정의하여 render 의 파라미터로 같이 넘겨준다.
render 말고도, redirect라는 함수도 사용한다.
render redirect 의 차이점은 render 는 templates로 이동하고 redirect는 URL을 불러온다.
from django.shortcuts import render, redirect from .models import Board from django.core.paginator import Paginator
def board_list(request): all_boards = Board.objects.all().order_by('-id') page = int(request.GET.get('p', 1)) paginator = Paginator(all_boards, 2) boards = paginator.get_page(page) return render(request, 'board_list.html', {'boards':boards}) |
- templates
해당 폴더는 html 파일들을 갖고 있다. 보여지는 측면? FRONT-END를 담당하는 부분.. 이라고 생각한다
- Models.py
데이터 베이스에 어떤 것들을 (필드) 저장하고 어떤 형식(기본값)을 갖게 할런지 저장하고 설정하는 것..
클래스를 선언하고 해당 클래스 안에 필요한 변수나 함수들을 넣는다.
만약에 하나의 사용자 관련 페이지를 만든다면 사용자에 대해서 필요한 username, password, email 등이 클래스에 들어간다. 해당 app 마다 각각의 models.py를 지정해야한다.
모델이 바뀔 때마다 migrations 실행해줘야 한다.
커맨드 창을 켜고 프로젝트 경로에서
python manage.py makemigrations
python manage.py migrate
'python' 카테고리의 다른 글
[python django] django 기초(2) 태그 및 내용 정리 (0) | 2019.12.20 |
---|---|
[python django] django 기초 (3) pythonanywhere 배포 (0) | 2019.12.20 |
[python] 데이터베이스 연동 SQLite3 삽입, 수정, 삭제, Dump, commit (0) | 2019.12.05 |
[python] *args, *kwargs, lambda, enumerate, type hint (0) | 2019.12.03 |
[python] for - else 구문 (0) | 2019.12.03 |
- Total
- Today
- Yesterday
- UITableViewController Not Working
- django 개발일지
- 장고 태그달기
- pythonanywhere배포방법
- ModelForm Form 차이
- 테이블출력안됨
- pythonanywhere배포
- 알파벳 카운팅
- django pythoneverywhere
- Django
- django 태그
- cleaned_data
- 실시간 데이터베이스
- iOS UITableView 출력안됨
- CellForRowAt 호출안됨
- 데이터베이스 추천
- Realtime Database
- Firebase 데이터베이스 추천
- iOS 화면 안나옴
- CellForRowAt Not Called
- 장고 게시판
- iOS 데이터베이스
- django 로그인접근
- django tag
- 웹 배포
- iOS 검은 화면
- django clean
- python 웹 배포
- 까만 화면
- django 게시판
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |