250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 실행 컨텍스트
- crud2
- 트랜잭션
- JWT
- docker
- TypeError: this.boardRepository.createBoard is not a function
- rebase
- 자바스크립트
- 스코프
- Jest
- 호이스팅
- nodeJS
- 장고초기세팅
- 프로미스
- wecode
- javascript
- 노드
- typescript
- westagram
- manytomanyfield
- on_delete
- bcrypt
- status code
- CORS
- node
- async/await
- django westagram
- pm2
- Django
- OSI7계층
Archives
- Today
- Total
될때까지
Django render, redirect 차이점이 뭐야? 본문
728x90
[오지랖 파이썬 웹 프로그래밍] 유튜브를 보면서 온라인쇼핑몰을 장고로 만들고 있다. 장고의 MTV 패턴 중, V는 view를 의미하고, 장고에서 기능을 담당한다. 웹 요청으로부터 전달받은 데이터를 처리하는 로직을 작성하는 부분이 바로 이 view다. view에는 함수형과 클래스형의 2가지 view가 있다.
함수형 뷰 (Function-based view, FBC) |
: request를 매개변수로 받음 : 사용자가 직접 모든 기능을 생성 |
클래스형 뷰 (Class-bassed view, CBV) |
: 장고에서 미리 마들어둔 클래스 뷰(제너릭뷰)를 상속받아서 생성 : url에서 주소를 열어줄 때, as_view()를 붙여 클래스뷰를 함수형 뷰로 바꿔줘야함 |
이런 뷰들을 작성하는 views.py에서 함수형 뷰를 생성하여 쇼핑몰의 장바구니에서 필요한 여러가지 기능들을 만들고 있었다. 어쩔때는 redirect를 쓰고, 어쩔 때는 또 render를 써서 뷰를 return했다. 둘의 차이점이 무엇일까? 둘다 return 시 사용하고, r로 시작하는 게 영 헷갈린다. 도대체 뭐가 다른걸까?
render | context dictionary를 template과 결합하여 HttpResponse 객체를 반환하는 메소드 |
render(request, template_name, context=None, content_type=None, status=None, using=None) | |
- request와 template_name은 필수 - template_name에는 불러오고 싶은 템플릿(html파일)을 작성 |
|
내가 가진 templates에 data를 넣어서 보내고 싶을 때. | |
redirect | redirect(to, *args, permanent=False, **kwargs) |
- to에는 이동할 URL 적기 - 상대URL(현재 실행되는 파일의 위치를 기준으로한 디렉토리의 경로) 절대URL(애플url, 삼성url처럼 도메인을 포함한 전체 위치정보) 모두 가능 |
|
현재 있는 페이지에서 지정한 url로 이동. 즉, 이동한 url과 연결되어 있는 views가 실행되고, 그에 따른 return값이 따로 존재한다. 로그인과 같은 경우 redirect로 메인페이지를 보낸다. 만약 render로 작성했다면 새로고침 시 다시 로그인을 해야하고 redirect의 경우에는 url을 타고 view로 넘어오기 때문에 재로그인이 필요없다. |
크게 일단 작성하는 방법이 다르다. 그래서 render는 request를 적어주고, 불러올 템플릿 이름, 원하는 인자(context)를 적어줬었고 redirect는 이동할 url만 적어줬었던 것이다. 템플릿을 불러오느냐, 아니면 지정 url로 이동시켜서 새 view를 실행시키냐에 따라 사용법이 다르다. 아직 정확하게 render와 redirect를 쓰는 경우를 잘 모르겠어서 포스팅은 여기서 마무리한다. 찝찝한 끝을, 추가 스터디 후에 하도록 하겠다!
728x90
'학습 > 살이되고 뼈가되어라' 카테고리의 다른 글
.gitignore에 나중에 추가한 파일이 추적될 때 (0) | 2022.07.21 |
---|---|
Python 왓더@property? (0) | 2022.04.29 |
Django settings.py : CART_ID = 'cart_item' ..? 왜만들지? (0) | 2022.04.27 |
Study :: '깔끔한 파이썬 탄탄한 백엔드' (0) | 2022.04.25 |
Django issue : form_valid? form_invalid? (0) | 2022.02.24 |