HttpRequest• 클라이언트부터의 모든 요청 내용을 담고 있으며, 매 요청 시마다 뷰 함 수의 첫번째 인자로 전달 (중요) 모든 뷰함수는 첫번째 인자로 request를 받는다 FBV, CBV=self.reqyestHttpRequest objects 에서 폼 처리 관련 속성들- request.method : 요청의 종류, 무조건 "GET" 또는 "POST" (참고) 무조건 대문자!!- request.GET : GET인자, QueryDict 타입 (GET요청/POST요청 시)- request.POST : POST인자, QueryDict 타입 (POST요청 시)- request.FILES : POST업로드 파일 인자, MultiValueDict 타입 MultiValueDict 'Simon'd.getlis..
# 등록 방법 echo "192.168.125.0/24 via 198.168.126.1 dev em2" > /etc/sysconfig/network-script/route-em2(설명) 192.168.125.0/24로 나가는 트래픽을 198.168.126.1 게이트웨이로 통하도록 설정 할 때 # 확인 방법> ip route show (참고사항)설정 후 아래와같은 에러가 발생하며 인터페이스가 정상적으로 올라오지 않는 경우가 있다.*오류* RTNETLINK answer : File exists이러한 경우 설정값이 정상인지 확인 후 정상이라면, > ip addr flush dev [인터페이스 명] 후 네트워크 재시작 하자
Cross-site request forgery사이트 간 요청 위조 공격• 사용자가 의도하지 않게 게시판에 글을 작성하거나, 쇼핑을 하게 하는등의 공격 A라는 싸이트 방문 시 아래와 같은 코드가 있다고 가정 한다. # java스크립트 코드 CSRF를 막기 위해 POST요청에 한해, csrf token 발급 및 체크 POST요청에 한해 CsrfViewMiddleware를 통해 csrf token을 체크 # middleware 란? view가 호출 되기 직전에 추가로 호출되는 함수 목록(설명) ##토큰 값은 계속 바뀐다.1. GET으로 유저에게 FORM형태를 제공한다.2. 인자를 유저가 입력 하고, 마지막 단계에 Token을 발급 한다.3. 전 항목을 전부 POST로 전송한다.4. CSRF는 POST의 토큰..
HTML Form # 입력 서식웹페이지에서는 form 태그를 통해, 데이터를 전송 ex) 로그인 폼, 댓글 폼 # user의 id와 pwd를 입력하여 서버로 전송하나의 form 태그는 하나 이상의 위젯 (Widget) 을 가진다. # 위젯 : 하나의 웹 UI # action은 유저한테 입력 받은 값들을 어느 서버로 보낼것인가 주소는 url : 1줄 문자열 입력 : 1줄 이상의 문자열 입력 : 항목 중 택일 : 체크박스 (한 그룹 내 여러 항목을 다수 선택 가능) : 라디오박스 (한 그룹 내 여러 항목 중에 하나만 선택 가능) 그 외 다수 위젯 HTML Form 태그 필수 속성• action : 요청을 보낼 주소• method # 어떤 방식으로 보낼 것인가• "GET" : 주로 데이터 조회 요청 시 • "..
Django Template Filter- 템플릿 변수값 변환을 위한 함수이며, 다수 필터 함수를 연결 가능- {{ var|filter1 }}, {{ var|filter2:인자 }}, {{ var|filter3:인자|filter4 }} # | (파이프)를 통해 연결 파이프 앞에 있는 인자가 filter2의 첫번째 인자, :(콜론) 뒤에 인자가 두번째 인자 로 지정 {{ var|filter3:인자|filter4 }}의 경우 앞서 결친 인자가 filter4 로 지정됨.- 빌트인 Filter가 지원되며, 장고앱 별로 커스텀 Filter 추가 가능 - date, time, timesince, timeuntil, default, default_if_none,join, length, linebreaks, lineb..
Fat ModelStupid Template : Thin View Template Engines 몇 가지Django Template Engine : Django 기본 지원 템플릿 엔진• Jinja2 : 써드파티 엔진이었으나, 최근에 최소한의 지원이 내장됨.• Django Template Engine과 문법이 유사• 장고 프로젝트에 쓸려면 django-jinja 추천• Mako, HamlPy장고 프로젝트에서 다른 템플릿 엔진을 쓸 수도 있으나, 가급적이면 기본 장고 템플릿 엔진에 먼저 익숙해지기를 권장 Django Template Engine Syntax{% extends "base.html" %} # extends = tag / "base.html" = 인자 (중요) 탬플릿 태그에서는 인자로 넘기는 ( ..
Mysql Binary Log삭제 수행되는 쿼리가 저장되는 파일, 기본적으로 binary log파일이 생성 된다.binary log를 쌓지 않아도 되지만, 리플리케이션 문제 해결을 위해 binary log를 추출 한다. 삭제 방법# db 데이터 저장 경로로 들어가 rm 명령어로 절대 삭제 하지 말것.(중요) db안에 index를 가지고 있어서 파일 삭제 시 index가 맞지 않음. 반드시 db터미널로 접근 해서 삭제 진행!! > mysql -uroot -p # db접근 > show binary logs; # 바이너리 로그 조회> purgr master logs to '로그 파일명'; binary로그 저장 주기 설정> set global expire_logs_day=3; # 3일로 설정# my.cnf 파일..
Django URL Dispatcherurls.py 변경만으로 "각 뷰에 대한 URL"이 변경되는, 유연한 URL 시스템 urlpatterns = [url(r'^blog/$', blog_views.post_list, name='post_list'),url(r'^blog/(?P\d+)/$', blog_views.post_detail, name='post_detail'),]# "/blog/", "/blog/1/" 주소로 서비스하다가, 아래와 같이 변경하면 urlpatterns = [url(r'^weblog/$', blog_views.post_list, name='post_list'),url(r'^weblog/(?P\d+)/$', blog_views.post_detail, name='post_detail'),..
Django Template Loader다수 디렉토리 목록에서 지정 상대경로를 가지는 템플릿을 찾음• app_directories.Loader 와 filesystem.Loader위 Loader를 통해, 템플릿 디렉토리가 있을 후보 디렉토리 리스트를 작성, 이는 장고 서버 초기 시작시에만 1회 작성 주로 아래 함수를 통해 Template 파일들을 활용합니다.• render : 템플릿을 렌더링은 문자열로 HttpResponse 객체를 리턴• render_to_string : 템플릿 렌더링한 문자열을 리턴 response = render(request, 'blog/post_list.html', context_params) # 변수 목록을 사전 타입으로 받는다. ## Return 타입 HttpResponse w..
여러 템플릿 파일 별로 필연적으로 발생하는 중복을 상속을 통해 중복 제거 상속은 여러 번 이뤄질 수 있다.부모 템플릿은 전체 레이아웃을 정의하며, 자식 템플릿이 재정의할 block 을 다수 정의해야 한다.자식 템플릿은 부모 템플릿을 상속받은 후에 부모 템플릿의 block 영역에 대해 재정의만 가능하며 그 외 코드는 무시 템플릿 상속 문법 : 항시 자식템플릿 코드 내, 최상단에 쓰여져한다. {% extends "부모템플릿경로" %} 템플릿 상속을 사용 전 # /blog/templates/blog/post_list.html AskDjango Blog {% for post in post_list %}{{ post.title }}{% endfor %}© 2017. AskDjango # /blog/template..