목록Django (84)

수학과의 좌충우돌 프로그래밍

[Django]Cross Site Request Forgery, csrf 공격과 대응

Cross Site Request Forgery Cross Site Request Forgery , 줄여서 csrf 공격이라고 하는 이 방법은 사이트 간 요청 위조 공격이라고도 합니다. 사용자가 의도하지 않게 게시판에 글을 작성하거나 쇼핑을 하게 하는 등의 공격으로서 잘못된 사이트에서 접속만 해도 post 요청이 사용자도 모르게 전달될 수 있습니다. javascript 를 통해서 쉽게 구현이 가능합니다. csrf 공격에 대한 대응 django 에서는 이를 대응하기 위해서 CsrfViewMiddleware 를 사용합니다. request 요청이 서버로 넘어와서 views 에 도달하기 전에 token 을 통해서 확인합니다.token을 확인해본 후 유효하지 않으면 403 Forbidden 에러가 발생합니다. t..

웹프로그래밍/Django 2019. 8. 9. 09:29
[Django] Form 과 validations

django 로 프로젝트를 진행하면서 예상 외의 난관에 봉착했습니다. 회원가입을 구현하는 과정에서 회원가입의 input 이 너무나도 많았습니다. 이를 하나씩 input 태그를 만들어주고 views 에서 값을 하나씩 받아오니 반복적인 코드가 많아졌습니다. django 는 이러한 문제를 form 을 통해서 해결하고 있었고 막상 사용해보니 form 의 중요성을 새삼 느낄 수 있었습니다. 그래서 form 에 대한 기초부터 전반적인 부분을 정리하고자 합니다. django 에서의 form style 아직 많은 프레임워크를 써보지 않아 공감은 잘 안되지만 각 프레임 워크마다 코딩 스타일이 있다고 합니다. django 같은 경우에는 하나의 url 에 대해 두 가지 역할을 모두 수행하도록 하는 것이 그 특징입니다. re..

웹프로그래밍/Django 2019. 8. 8. 22:21
[Django] HttpRequest, HttpResponse

HttpRequest 클라이언트로 부터 들어오는 모든 요청을 담고 있습니다. 일반적으로 클라이언트는 웹브라우저를 말하며 django restful API 로 안드로이드 등 앱과 연결 시킬 경우에는 클라이언트가 바뀔 수도 있겠죠. request 에 접근 views 에서 함수를 정의할 때 아무렇지 않게 인자로 넘겨 주었던 request 가 바로 HttpRequest 의 객체입니다. 따라서 FBV 에서는 request 로 접근하고 CBV 에서는 self.request 로 접근을 하게 됩니다. request 속성 method request 요청의 종류를 나타냅니다. "GET" 또는 "POST" 로서 대문자로 저장이 됩니다. 다음과 같은 분기문을 통해서 들어온 요청에 종류에 따라서 다른 작업을 수행할 수 있습니다..

웹프로그래밍/Django 2019. 8. 8. 20:07
[Django] FBV 와 CBV 의 decorators 사용법

decorator 는 처음보는 생소할 수 있지만 python 기초 문법입니다. decorator 가 무엇인지 모르신다면 아래 링크를 통해 기초적인 부분을 먼저 공부하고 오시는걸 추천해드립니다. python 장식자, decorator란? [python] 장식자, 데코레이터(decorator) 를 알아보자 python 으로 작성된 다른 코드들을 보다보면 아래와 같이 어느 함수 위에 @ 가 있는 걸 볼 수 있습니다. 이 @ 는 무엇을 나타내고 어떤 역할을 하지는 알아보도록 합시다. @decorator def function1(): print("ssu.. ssungkang.tistory.com FBV 에 decorators 사용법 FBV 는 함수로 작성하기 때문에 기존에 알던 방법과 동일합니다. 아래 처럼 2가..

웹프로그래밍/Django 2019. 8. 8. 04:53
[Django] CBV (1) CBV 와 Base Views

CBV 란? 기존에는 views 를 함수로 사용해왔습니다. 이는 Function Based View , 줄여서 FBV 라고 합니다. 그렇다면 함수 외에 다른 것으로 views 를 작성할 수는 없을까요? 가능합니다. views는 사실 함수가 아닌 Callable Objects,즉 호출가능한 객체면 문제 없습니다. 함수도 호출가능한 객체 중 하나이기 때문에 사용할 수 있는 것이죠. 따라서 다른 호출가능한 객체인 클래스로도 views 를 구성할 수 있습니다. 이는 Class Based View, 줄여서 CBV 라고 합니다. CBV 의 장점 우선 클래스의 장점을 모두 사용할 수 있습니다. 상속, 오버라이딩 등등 여러 방식으로 코드의 효율을 극대화 할 수 있습니다. FBV 로 views 를 작성하다보면 생각보다 ..

웹프로그래밍/Django 2019. 8. 6. 03:23