장고에서 시간대 설정하는 부분을 알아보자. timezone 문제가 있어 헷갈리는데 아래 링크 내용을 그대로 적용해 봤다. https://pythonblog.co.kr/blog/66/ 61 Django 시간대설정 -Time Zone 장고 관리자 화면에서 글을 등록 중 NOw버튼을 누르니 한국시간과 9시간 정도 차이가 있네요. (UTC) 시간 설정은 셋팅 파일에서 할 수 있습니다. pythonblog.co.kr LANGUAGE_CODE = 'ko-kr' #국가 설정 TIME_ZONE = 'Asia/Seoul' #시간대 설정 USE_I18N = True #국제화(Internationalization) USE_L10N = True #지역화(localization) USE_TZ = False #장고 시간대 그런데..
@login_required 데코레이터를 설정해 둔 경우, 실패한 경우 어떤 페이지가 뜨기는 하는데 내가 따로 설정한 적이 없는 것 같은데, 어디서 설정해 주나? 알아보다 보니 settings.py 에 설정 되어 있어서 코드에서 볼 수 없었다. settings.py 에 보면 "LOGIN_URL" 이라는 값을 설정해 둔 곳이 있다. # settings.py ... LOGIN_URL = '/login/' ... @login_required 데코레이터가 실패시 여기 설정된 페이지로 자동으로 이동 시켜 주도록 장고가 설정 되어 있다는 것. 이게 싫은 경우에는 어떻게 해야 하나? 별도의 데코레이터 함수를 따로 작성하면 되는 것은 당연한데 더 편하게 해 주는 것은 없을까? 추후 업데이트 할련다. 로그인 실패 페이지..
Django에서 ninja api를 정의하여 호출하는 경우, 데이터베이스의 중복이나 불일치 등등 DB와 연동하여 판단하는 것 말고 폼 객체에 필드 값이 일단 사전에 올바른지 간단하게 체크하는 것이 필요하다. 보통 이런경우 api에서 처리해도 되지만 Schma를 정의해서 처리하는 방법이 있다. 자체 공부용으로 정리하는 것이므로 두서 없어도 그냥 넘어가주세요. 여기서 정리한 모든 내용은 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) ninja api 구현 함수에 보면 아래와 같이 되어 있다. @api_router.post("register", response={201: None, 409: Mess..
Data를 테이블 표현하는 것은 모든 데이터 서비스의 기본이다. 매번 이 부분을 구현하고 검색하고, 페이지네이션에 Export 기능까지 따로따로 하는데 이 모든것이 이미 구현이 되어 있다. Datatable.net 꼭 이 라이브러리를 활용하자. 여기서 정리한 모든 내용은 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) DataTable 일단은 한번 보면 안다. 아래 예제 사이트로 가서 봐라 데이터를 표현하는 테이블은 이걸 써야 한다. https://datatables.net/examples/ajax/objects.html 간단하게 Vue.js 를 이용하여 구현한 코드를 보자. Django 에서 ..
Django 미들웨어 중간에 건너뛰고 싶다 혹은 일부 함수는 다르게 적용되고 싶다면 어떻게 적용하는지 알아보자. 여기서 정리한 모든 내용은 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 방식은 데코레이터 함수를 적용해서 구현하는 것이다. 아래와 같이 특정 유저만 들어오도록 하는 데코레이터 함수를 구현해 본다. def admin_only(function): @wraps(function) def wrap(request, *args, **kwargs): is_admin = request.user.is_superuser if is_admin: return function(request, *args, ..
Django 로직을 만들다 보면, 여러가지 쿼리 스트링을 가지고 해야할 일이 많다. 쿼리 스트링에 한글이 들어와 있으면 표현이 이상한 코드들이 막 나오는 것을 볼 수 있다. 이 부분을 변경해서 사용해야 한다. 여기서 정리한 모든 내용은 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 관련 코드는 아래와 같다. @staticmethod def form_data_to_dict(body: bytes): UNLOGGABLES = ["csrfmiddlewaretoken", "password"] body = body.decode("utf-8") body = unquote(body).split("&") rt..
Django Admin tools 가 여러 프로젝트가 존재하고 있다. Admin 페이지와 기능을 위해 이미 완성된 여러 admin tools에 대한 내용을 살짝 경험해 보자 - 이 모든 내용은 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 일단 현재 Django에서 기본을 제공중인 admin 기능을 사용해 보기 cookbook 페이지가 잘 되어 있다. 먼저 기본 기능을 잘 쓰는 것이 중요하다. https://books.agiliq.com/projects/django-admin-cookbook/en/latest/ Django Admin Cookbook — Django Admin Cookbook ..
장고가 느리다는 평가가 많은데, 서비스가 커질 수록 성능에 목숨을 많이 거는 것은 맞다. 이 대단한 Django가 그냥 쳐다보고 있지는 않을 것 같다. 여러가지 cache 기법을 사용해서 속도나 성능을 키워보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 아래 공식 사이트에서는 여러가지 방법이 소개가 되어 있다. https://docs.djangoproject.com/en/3.2/topics/cache/ Django’s cache framework | Django documentation | Django Django The web framework for perfectionists with..
Vue.JS Delimiters 를 기본적으로 {{ }} 이걸 많이 쓴다고 하는데, 이건 다른 곳에서도 쓰이는 표기라, 중복으로 사용되면 무엇인 적용될 지 잘 모르겠죠 그래서 일단 편한것으로 바꿔서 사용해 보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 아래 코드는 delimiters 를 [[ ]] 형태로 변경해서 사용하는 예제이다. 코드상에서 id="vue_div" 로 선언된 부분에서는 jinja2 같은 어떤 템플릿 베이스 엔진이 동작하더라도 여기에 정의한 대로 [[ ]] 로 쓰이는 변수, 문장들은 vue.js 껏으로 이해해서 동작이 된다. 간단하지만, 일단 나 같은 초보자들은 일단 알..
Vue.js 에서 DOM 에 클릭 이벤트 처리를 하고 싶다면 이벤트를 정의하면 된다. 그 정의 방법은 "v-on:eventname" 이런식으로 정의하면 된다. - 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 공식 사이트에서 예제를 가져오면, https://vuejs.org/v2/guide/events.html We can use the v-on directive to listen to DOM events and run some JavaScript when they’re triggered. For example: Add 1 The button above has been clicked {{ co..
Django를 이용하여 REST API 서비스를 구상한다면 제공되는 플랫폼이 있다. 대표적으로 DRF와 요즘 인기가 좋다는 FastAPI 기술과 유사하게 서비스가 제공되는 Django-ninja 플랫폼이 있다. 간단한 소개 자료만 저장해 두려 한다. - 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) DRF - Django REST Framework 말 그대로 REST 를 아주 쉽게 장고에서 제공하기 위해 만들어진 플랫폼이다. 말대로 쓰기가 쉽고 확장성도 뛰어나다. 이제 알았지만 Flask 기반으로 일단 전체 서비시의 프로토타입핑은 아주 빨리 할 수 있지만 사용자 관리 그룹 관리 인증등등 아주 ..
유용한 장고 라이브러리 소개글, 일단 IP를 이용한 위치정보, 접속 브라우저 정보를 가져오는 라이브러리, 그리고 어뷰징등의 잘못된 접근을 간단하게 막아주는 ratelimit 기능을 소개해 보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) Ratelimit 기능 초당 몇회, 분당 몇회 이상의 요청이 들어오면 자동으로 조정해서 서비스를 안주던, 메인페이지로 redirect 를 하던 처리를 할 수 있도록 간단한 wrapper 로 구현이 가능하다. 일단 쉽다! 이게 장점이지머~~~ 설치는 $ pip install django-ratelimit 간단한 사용법은 ## 라이브러리 선언하고, from r..
유용한 장고 라이브러리 소개글, 일단 IP를 이용한 위치정보, 접속 브라우저 정보를 가져오는 라이브러리, 그리고 어뷰징등의 잘못된 접근을 간단하게 막아주는 ratelimit 기능을 소개해 보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) Django 위치정보 IP나 도메인 주소 정보로 서비스되고 있는 위치 정보를 가져오는 라이브러리, 나라와 도시에 대한 정보를 별도 데이터베이스로 저장해서 관리해주고 있다. 주기적으로 이 DB를 가져와서 업데이트 하면 꽤 괜찮은 정확한 정보를 사용자들에게 보여 줄 수 있다. 위도 경도 정보도 가져올 수 있다. Django settings.py 에 GEOIP_..
장고에서 ORM 을 사용하는 경우 Model 을 만들면 Class 객체 하나를 테이블로 만들어 버리게 된다. 그냥 추상 클래스로 상속해서 쓰게 하려는 경우 낭패가 된다 이때 사용하는 키워드가 Meta 라는 것이 있네. from Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) class 내에 "class Meta:" 라는 것을 하나 더 두고 abstract = True 로 속성을 설정하면, 이 class 는 DB 테이블로 변환되지 않고 상속에 쓸 수 있는 class 로 남겨둔다. 즉, TimeStampModel 에 보면 "updated_at" "created_at" 이라는 필드가 다른 테이블에 거의 공통으로 사용되고 있어 이 부분을 한 곳에 정리해 두고 상속해서 쓰도록..
실제 서비스를 개발 하려면 필수적으로 2가지 작업을 해야 한다는 것 같다. 데이터 플로우 작성과 유저 시나리오 작성 머 대충 개발하면서 정리해 나가면 된다고 생각하는데, 많이 경험하신 분들은 이렇게 개발을 시작하나 보다. 꼭 따라 해보는 것이 여러모로 도움이 될 듯 한데 (ㅋㅋㅋ 하기 싫은 작업들이네) 암튼 조은씨의 실무 강의에서 설명된 부분은 몇가지 추려 보면 - from 조은의 프론트엔드 실무 가이드 : 요구사항 분석과 적정 기술 우선 데이터 플로우 Data Flow 판서 내용 서비스라면 인증 방식을 정해야 하고, 인증이 되냐 안되냐에 따라 다른 뷰를 보일 수 있으니 분리하고 데이터가 내부 데이터 인지 외부 데이터 인지 판단해서 구분해 두는 것도 중요하다. 여기서 내부 데이터라 함은 그냥 프로젝트 빌..