목록웹프로그래밍 (163)

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

[Django] summernote, 에디터 사용하기

일반적으로 브라우저에서 지원해주는 Input 은 기능이 부족하다고 생각해서 다른 에디터를 사용하고자 하였습니다. 기존에 CKEditor 를 알고 있어서 사용해보았는데 결정적으로 file 에 대해서 부분 유료라서 어쩔 수 없이 다른 걸 찾아보았습니다. 그러던 중 summernote 를 찾게 되었고 적용이나 기능 면에서 더 효율적이라 생각되어 사용 방법을 정리해보았습니다. WYSIWYG 란? WYSIWYG 는 위지위그라고 읽으며 What You See Is What You Get 의 줄임말로서 '보는대로 얻는다' 라는 의미입니다. 다시 말해서 html 처럼 따로 css 문법을 적용해서 디자인을 편집하는 것이 아니라 문서 편집 과정에서 화면에 포맷된 낱말, 문장이 출력물과 동일하게 나오는 방식을 말합니다. s..

웹프로그래밍/Django 2019. 8. 13. 15:21
[Djnago] ModelForm 알아보기

ModelForm model 과 form 은 연관이 되어있습니다. 대체적으로 model의 field 에 해당하는 form filed 를 만들기 때문에 models.py 와 forms.py 를 작성하면 이는 대체로 비슷한 양상을 보입니다. 하지만 따로 작성하게 되면 각자를 따로 관리해줘야 하기 때문에 번거롭습니다. 다행히도 둘을 연결 시킨 ModelForm 이 존재하고 이는 form 을 상속받아 form 처럼 동작할 수 있으면서 model 과 쉽게 연결지을 수 있습니다. 지정한 model로 부터 필드를 읽어들어서 Form Fields 를 세팅 함으로서 field 를 하나하나 설정해줄 필요가 없습니다. 간단한 예시가 아래 나와있습니다. # forms.py class PostForm(forms.ModelFor..

웹프로그래밍/Django 2019. 8. 12. 07:17
[SEO] 검색 엔진 최적화, SEO

SEO란? SEO란 search engine optimization 의 줄임말로서 검색 엔진 최적화 라고 합니다. 말그대로 웹페이지 검색 엔진이 자료를 수집하고 순위를 매기는 방식에 맞게 웹페이지를 최적화하여 검색 결과의 상위에 나타날 수 있도록 하는 작업입니다. 아무래도 상위에 있을수록 방문 트래픽이 증가하기 때문에 효과적인 인터넷 마케팅이라고 할 수 있습니다. 하지만 각 검색 엔진들은 웹페이지에 순위를 메기는 방식이 다르기 때문에 어느 검색엔진에 최적화 할지 고르는 것 역시 중요합니다. 가장 큰 검색 엔진인 구글과 한국에서 가장 큰 검색 엔진 네이버에 대해서 어떻게 다른지 간략하게 알아보도록 하겠습니다. 구글과 네이버의 검색엔진 구글이 콘텐츠를 평가 할 때의 가장 큰 평가기준을 EAT 라고 합니다. ..

웹프로그래밍/SEO 2019. 8. 12. 04:23
[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