목록웹프로그래밍/Django (81)

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

[Django] widget (2) widget 만들어보기 - 별점 주기 rateit.js

widget (1) [Django] widget (1) widget의 원리와 widget 만들어보기 - 실시간 글자수 표시 widget input 태그는 type 속성에 따라 여러 모습을 보여줍니다. text 일 때는 글을 입력할 수 있도록, date 일 때는 날짜를 지정할 수 있도록, password 일 때는 비밀번호를 입력할 수 있도록 하는 등 다양한 type이 있.. ssungkang.tistory.com 위의 포스팅과 개별적인 내용이지만 전체적인 내용은 이어지므로 이해가 잘 가지 않는다면 위 포스팅을 참고해주시면 감사하겠습니다. 위 포스팅에서도 확인가능하듯 현재 model 은 다음과 같습니다. # core/models.py from django.db import models from django...

웹프로그래밍/Django 2019. 8. 22. 03:18
[Django] widget (1) widget의 원리와 widget 만들어보기 - 실시간 글자수 표시 widget

input 태그는 type 속성에 따라 여러 모습을 보여줍니다. text 일 때는 글을 입력할 수 있도록, date 일 때는 날짜를 지정할 수 있도록, password 일 때는 비밀번호를 입력할 수 있도록 하는 등 다양한 type이 있습니다. 그리고 각 type 에 맞춰서 브라우저에서 그에 맞는 UI 를 제공합니다. 하지만 기본적인 UI 를 제공할 뿐이지 실제로 product 레벨에서는 사용하기 부족한 게 사실입니다. 몇 가지 상황에 대해서 이를 커스텀 하는 방법에 대해서 알아보도록 하겠습니다. django widget django에서는 widget 을 사용하여 html input 태그를 생성합니다. widget 은 model에 따라 기본으로 지정되는 default 가 존재합니다. 좀 더 구체적으로 mo..

웹프로그래밍/Django 2019. 8. 21. 21:14
[Django] Form templates render 알아보기

forms 을 사용하기 이전에는 templates 에서 하나씩 input 으로서 지정을 해주었습니다. 하지만 forms 를 쓰면 {{ form }} 만으로도 지정한 필드에 대한 모든 input을 만들 수 있습니다. 이렇기 때문에 각 input 에 대하여 세부적인 속성을 지정하거나 커스텀하는게 어려울 수 도 있습니다. 하지만 django 에서는 이러한 부분들을 다 지원해주고 있고 유용한 몇 가지 알아보도록 하겠습니다. hidden input 지정 Post 라는 model 은 user_agent 라고 사용자의 브라우저 및 OS 에 대한 정보를 필요로 합니다. # models.py from django.db import models class Post(models.Model): title = models.Ch..

웹프로그래밍/Django 2019. 8. 16. 02:41
[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
[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