일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- PYTHON
- DRF
- java
- Django
- API
- react
- Git
- 파이썬 알고리즘
- django widget
- c++
- 알고리즘 풀이
- django ORM
- 알고리즘 문제
- javascript
- MAC
- HTML
- js
- 알고리즘
- web
- django rest framework
- 장고
- Baekjoon
- CSS
- 알고리즘 연습
- 파이썬
- es6
- AWS
- 백준
- form
- Algorithm
- Today
- Total
목록Django (84)
수학과의 좌충우돌 프로그래밍
Cross Site Request Forgery Cross Site Request Forgery , 줄여서 csrf 공격이라고 하는 이 방법은 사이트 간 요청 위조 공격이라고도 합니다. 사용자가 의도하지 않게 게시판에 글을 작성하거나 쇼핑을 하게 하는 등의 공격으로서 잘못된 사이트에서 접속만 해도 post 요청이 사용자도 모르게 전달될 수 있습니다. javascript 를 통해서 쉽게 구현이 가능합니다. csrf 공격에 대한 대응 django 에서는 이를 대응하기 위해서 CsrfViewMiddleware 를 사용합니다. request 요청이 서버로 넘어와서 views 에 도달하기 전에 token 을 통해서 확인합니다.token을 확인해본 후 유효하지 않으면 403 Forbidden 에러가 발생합니다. t..
django 로 프로젝트를 진행하면서 예상 외의 난관에 봉착했습니다. 회원가입을 구현하는 과정에서 회원가입의 input 이 너무나도 많았습니다. 이를 하나씩 input 태그를 만들어주고 views 에서 값을 하나씩 받아오니 반복적인 코드가 많아졌습니다. django 는 이러한 문제를 form 을 통해서 해결하고 있었고 막상 사용해보니 form 의 중요성을 새삼 느낄 수 있었습니다. 그래서 form 에 대한 기초부터 전반적인 부분을 정리하고자 합니다. django 에서의 form style 아직 많은 프레임워크를 써보지 않아 공감은 잘 안되지만 각 프레임 워크마다 코딩 스타일이 있다고 합니다. django 같은 경우에는 하나의 url 에 대해 두 가지 역할을 모두 수행하도록 하는 것이 그 특징입니다. re..
HttpRequest 클라이언트로 부터 들어오는 모든 요청을 담고 있습니다. 일반적으로 클라이언트는 웹브라우저를 말하며 django restful API 로 안드로이드 등 앱과 연결 시킬 경우에는 클라이언트가 바뀔 수도 있겠죠. request 에 접근 views 에서 함수를 정의할 때 아무렇지 않게 인자로 넘겨 주었던 request 가 바로 HttpRequest 의 객체입니다. 따라서 FBV 에서는 request 로 접근하고 CBV 에서는 self.request 로 접근을 하게 됩니다. request 속성 method request 요청의 종류를 나타냅니다. "GET" 또는 "POST" 로서 대문자로 저장이 됩니다. 다음과 같은 분기문을 통해서 들어온 요청에 종류에 따라서 다른 작업을 수행할 수 있습니다..
decorator 는 처음보는 생소할 수 있지만 python 기초 문법입니다. decorator 가 무엇인지 모르신다면 아래 링크를 통해 기초적인 부분을 먼저 공부하고 오시는걸 추천해드립니다. python 장식자, decorator란? [python] 장식자, 데코레이터(decorator) 를 알아보자 python 으로 작성된 다른 코드들을 보다보면 아래와 같이 어느 함수 위에 @ 가 있는 걸 볼 수 있습니다. 이 @ 는 무엇을 나타내고 어떤 역할을 하지는 알아보도록 합시다. @decorator def function1(): print("ssu.. ssungkang.tistory.com FBV 에 decorators 사용법 FBV 는 함수로 작성하기 때문에 기존에 알던 방법과 동일합니다. 아래 처럼 2가..
Generic display views 에는 DetailView 와 ListView 가 있습니다. DetailView 는 각 상세 페이지를 나타내는데 있어서 ListView 는 전체적인 페이지를 나타내는데 있어서 굉장히 효과적입니다. 두 클래스를 알아보도록 합시다. DetailView 실습 전체적인 코드를 살펴보기 전에 어떻게 사용되고 있는지 예시를 먼저 보도록 하겠습니다. DetailView 의 역할은 각 상세페이지를 보여주는 역할을 합니다. 간단히 Post 모델을 정의하고 이 상세페이지를 보여주도록 하겠습니다. # models.py from django.db import models class Post(models.Model): title = models.CharField(max_length=20) ..
CBV 란? 기존에는 views 를 함수로 사용해왔습니다. 이는 Function Based View , 줄여서 FBV 라고 합니다. 그렇다면 함수 외에 다른 것으로 views 를 작성할 수는 없을까요? 가능합니다. views는 사실 함수가 아닌 Callable Objects,즉 호출가능한 객체면 문제 없습니다. 함수도 호출가능한 객체 중 하나이기 때문에 사용할 수 있는 것이죠. 따라서 다른 호출가능한 객체인 클래스로도 views 를 구성할 수 있습니다. 이는 Class Based View, 줄여서 CBV 라고 합니다. CBV 의 장점 우선 클래스의 장점을 모두 사용할 수 있습니다. 상속, 오버라이딩 등등 여러 방식으로 코드의 효율을 극대화 할 수 있습니다. FBV 로 views 를 작성하다보면 생각보다 ..
Media 파일이란? media 파일이란 FileField 를 통해 저장한 모든 파일을 지칭합니다. 물론 ImageField 도 FileField 를 상속받은 필드로서 유사 필드들을 통해 저장된 파일도 media 파일입니다. 이는 특별하게 db 필드에는 저장경로를 저장하고 파일은 뒤에서 다시 다루겠지만 settings.MEDIA_ROOT 경로에 저장 하게 됩니다. settings 에서의 설정 MEDIA_URL MEDIA_URL = '/media/' 각 media 파일에 대한 URL 의 고정값을 설정할 수 있습니다. 예시를 들자면 필드명.url 에 의해 MEDIA 파일에 대하여 접근할 때 결정되는 값입니다. MEDIA_ROOT MEDIA_ROOT = os.path.join(BASE_DIR, 'media')..
Static 파일이란? static 파일이란 js, css, image, font 등과 같이 개발자가 사전에 미리 서버에 저장 해둔 파일들을 말합니다. 정적인 파일들이라고 할 수 있습니다. settings 에서의 설정 STATIC_URL STATIC_URL = '/static/' 이미 settings 에 위와 같이 설정이 되어있습니다. 이를 통해 각 static 파일에 대한 URL의 고정값을 설정할 수 있습니다. 예시를 들자면 {% static '경로' %} 에 대해서 해당 URL 이 STATIC_URL+'경로' 로 바뀌게 되고 이는 다시'/static/경로' 다음과 같이 바뀌게 되어 참조를 할 수 있습니다. STATICFILES_DIRS STATICFILES_DIRS = [ os.path.join(BA..
Django의 파이썬 변수를 templates 로 넘겨주기 위해서 템플릿 문법를 사용합니다. 단순히 문자열 값을 나타내기 위해서는 문제가 없지만 javascript 에서 처리를 해줘야 할 상황이 온다면 제한 사항이 생깁니다. 이럴 때는 특별한 과정이 필요한데 이에 대해서 알아보도록 하겠습니다. 문제 발생 상황 어느 상황에서 문제가 발생했는지 전체적인 코드를 간단하게 설명해드리겠습니다. models.py from django.db import models # Create your models here. class Profile(models.Model): name = models.CharField(max_length=10) def __str__(self): return self.name def as_dict..
SNS 를 비롯해서 많은 사이트에는 좋아요, 하트 라고 불리는 기능이 있습니다. 아마 다들 뭔지 아실거라고 생각합니다. 이번에는 이 기능을 구현해보도록 하겠습니다. 그러기 위해서 부가적으로 구현되어야 할 것이 많습니다. 유저부터 시작해서 게시물 등 많지만 이 부분은 앞선 포스팅에도 있으므로 빠르게 넘어가도록 하겠습니다. 추가적으로 기능 구현에 주를 두고 있으므로 templates 의 디자인적인 부분은 아예 신경 쓰지 않았습니다. 좋아요 기능 구현 위에서 말했듯이 이번에 알아볼 중요 코드 외에 부가적인 코드가 많습니다. 그 부분 보다는 좋아요를 위한 코드 위주로 설명을 하도록 하겠습니다. # like/models.py class Profile(models.Model): user = models.OneToO..