IT 공부 기록/Django 27
CSRF
CSRF (Cross-Site Request Forgery - 사이트간 요청 위조)자동 글 작성, 쇼핑, 댓글 달기 등 유저가 의도치 않는 행동을 실행하는 공격장고에선 이를 막기 위해 CSRF 토큰을 제공하며 Post 요청 시 필수로 발급해야 한다.CSRF 토큰은 뷰가 호출되기 직전, 미들웨어 함수들이 호출되는데, 이때 체크한다.미들웨어는 뷰가 호출되기 전, 호출된 후에 실행되는 함수들의 묶음을 말한다.장고는 항상 Get 방식을 통해 사이트를 보여주고, 사이트 입력값을 Post 방식으로 넘긴다.그리고 CSRF 토큰은 Get 단계에서 생성하며, 입력 값과 함께 Post로 넘기는 과정에서 토큰을 체크한다.토큰이 유효하면 post요청에 따른 뷰를 호출해주고, 아닐 경우 403 에러를 출력한다.csrf는 유저 ..
HTML Form
HTML Form 웹페이지에서 데이터를 전송할 수 있는 태그기본 형태 action : 요청을 보낼 주소method : 전송 방식GET : 데이터 조회 요청시헤더만 전송되며 application/x-www-form-urlencoded 방식으로만 인코딩한다.바디가 존재하지 않으므로 enctype은 지정불가라 할 수 있다.POST : 생성/수정/삭제 요청시헤더와 바디가 함께 전송된다.enctype : 데이터 형식(패키징) 지정application/x-www-form-urlencoded enctype의 default 설정으로 GET과 POST 방식 모두 설정이 가능하다.multi/form-data파일 업로드에 사용되는 형식으로 POST 방식에서만 사용이 가능하다.GET방식으로 설정 시, 파일명은 전송되지만 파일..
템플릿 엔진
템플릿 엔진Django Template Engine : 기본 장고 템플릿 엔진으로 익숙해질 필요가 있다. 템플릿 엔진 syntax변수 {{ mydict.key }} : dict의 key로 value에 접근하는 것처럼 attr도 key로 접근한다.{{ my.func }} : 함수는 괄호없이 접근한다.{{ mylist.0 }} : 인덱스도 attr처럼 접근인덱스, 함수, 속성 모두 .을 이용해 접속하는 것이 포인트! 템플릿 엔진 태그템플릿용 함수항상 {% %}로 열고 닫힌다.comment템플릿 주석comment 태그는 서버측에서 렌더링하지 않는다.{% comment "주석 제목"%}...{% endcomment %} csrf tokencsrf 공격을 막기위해 사용하는 태그장고에서는 기본적으로 csrf tok..
Queryset
모델 매니저 데이터베이스 쿼리와 연동되는 인터페이스default 모델 매니저의 이름은 objects이며, 모델 매니저로 모델의 Queryset을 얻는다. Queryset파이썬 객체로서, DB와 인터페이싱을 해주는 역할로 전달받은 모델의 객체 목록이다.DB의 데이터를 읽고, 수정 및 정렬 등의 기능이 가능하며, 체이닝을 이용해 복잡한 쿼리를 짤 수 있다.or조건은 from django.db.models imort Q이 필요하다.get : 단, 1개의 데이터를 fetch할 때 사용# Lcw 모델 전체 데이터 조회 : Queryset 객체는 dict 형태와 비슷하다.>>> Lcw.objects.all() [, ] # 데이터베이스 질의 가능 >>> Lcw.objects.create(author='LCW', ti..
AskDjango - 기본편 3 : View Overview
ViewURLConf에 매핑된 콜 가능한 객체첫 번째 인자로 HttpRequest 인스턴스를 받는다.필히 HttpResponse 인스턴스를 만들어 반환해야한다. FBV (Function Based View)와 CBV (Class Based View)로 구분.FBVFBV는 HttpResponse 메서드를 사용해 값을 return한다.CBVCBV는 템플릿 시스템을 이용, html을 render 메서드에 얹어 response 한다.CBV는 상속을 통한 재사용성에 초점이 맞춰져있다.또한, 구현하려는 뷰가 CBV에 구현되어 있다면 최소 설정으로 구현할 수 있는 장점이 있다.CBV는 FBV에 비해 구현하기 어렵다. 처음 공부한다면 FBV를 추천하며, 적응된 후에 CBV를 하자. 템플릿템플릿에는 Marker들이 존재..