본문 바로가기

728x90
반응형

Python

(96)
Django Template, render_to_string # backend에서 data 받기 #render_to_string #loader Ajax를 통해서 HTTP통신을 하는 경우 backend에 request를 보내고 거기에 대한 frontend에서 response를 받고, reponse 안에 data를 담아올 수 있습니다. 받아온 data를 화면 전환 없이 특정 html 부분만 바꿀때 Ajax를 많이 활용합니다. 경우에 따라서는 화면 전체를 다른 페이지로 전환을 하면서, data를 backend에서 받아오고 싶을 수 있습니다. Django template의 경우 context에 담아서 render해 줄 경우 html에 바로 뿌려줄 수 있지만, 데이터를 받아서 데이터 자체를 활용하기가 수월하지 않습니다. 즉, 원하는 것은 다음과 같은 상황입니다. 1) 페이지 전환을 특정 html로 완전히 바꿔주고 2) context도 활용하면서 3) a..
sort # 복수의 값으로 정렬할 때 세가지 이상의 값으로 이루어진 list 또는 튜플이 있을 때, 첫번째 값으로 먼저 정렬, 두번째 값으로 그 다음 정렬, 세번째 값으로 정렬을 순차적으로 적용하려면 sample_list = [(1,2,3), (2,5,3), (2,5,1), (2, 3, 10)] sample_list.sort(key=lambda x: [x[0], x[1], x[2]]) sample_list.sort(key=lambda x: [x[0], x[1], x[2]], reverse=True) # 전체가 뒤집힌다. # x[0] 기준으로는 오름차순 (default) # x[1] 기준으로는 내림차순으로 정렬하고 싶다면 sample_list.sort(key=lambda x: [x[0], -x[1]])
이미지 업로드: Django ImageField # Ajax Django 파일이 저장될 디렉토리와, 그 디렉토리를 가리킬 URL 설정 settings.py import os MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' urls.py from django.conf import settings from django.conf.urls.static import static urlpatterns = [ ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) Pillow 설치 pip install pillow pillow를 설치 하지 않으면 아래 모델 생성에서 ImageField를 사용하지 못하는 에러가 발생 model 생성 fro..
Django Template filter: {% with %} Django template에서 필터와 필터를 중복해서 써야되는 경우들이 있다. 예를 들어서 mathfilters를 이용해서 연산을 하고, 거기에 특정 리스트의 길이를 더하고 싶을때 |length 필터를 더해줘야 하는데, 이럴 때 원하는 대로 작동을 안한다. 그때 {% with %} 로 원하는 값을 먼저 뽑아와서 용해주면 된다 example 1) {{commits.number|mul:3|add:commits|length}} # X {% with commits|length as commits_length %} # O {{commits.number|mul:3|add:commits_length}} {% endwith %} example2) {% with name|add:"Kim" as re_name %} {%..
STATIC_ROOT vs STATICFILES_DIRS Django에서는 static 파일과 관련한 설정에는 5가지가 있고 STATIC_URL STATIC_ROOT STATICFILES_DIRS STATICFILES_STORAGE STATICFILES_FINDERS 그 중 아래 3가지가 일반적으로 많이 사용이 됩니다. STATIC_URL STATIC_ROOT STATICFILES_DIRS STATIC_URL의 경우, static 경로에 접근하기 위해 설정해주는 url이라 개념적으로 헷갈릴게 거의 없는데, STATIC_ROOT와 STATICFILES_DIRS 는 둘다 static 파일들을 다룬다는 점에서 헷갈리게 합니다. 결론적으로만 말하면 STATIC_ROOT는 배포 단계(deployment)에서 필요하고 STATICFILES_DIRS는 개발 단계(devel..
Python: insert() # insert argument in list list의 원하는 index에 값을 넣어주는 함수 insert(index, argument) ex) list_1 = [1,2,3] list_1.insert(2, 10) print(list_1) list_1.insert(0,('a,','b')) print(list_1) list_1.insert(2,['가','나']) print(list_1) list_1.insert(2,{'!', '@'}) print(list_1) # output [1, 2, 10, 3] [('a,', 'b'), 1, 2, 10, 3] [('a,', 'b'), 1, ['가', '나'], 2, 10, 3] [('a,', 'b'), 1, {'!', '@'}, ['가', '나'], 2, 10, 3]
Python: json.loads() # string to dict # doble quotes # Boolean python에서 dictionary 모양으로 되어 있는 string을 dictionary 타입으로 바꿔주는 방법 중에 json이 있습니다. import json # Assume that dict_shaped_string string_to_dict = json.loads(dict_shaped_string) print(type(string_to_dict) # output: 'dict' 그런데 json.loads를 이용할 때 주의할 점이 있습니다. 대표적으로 - ' 이 아니라 " 을 써야하는 점(double quote) - Javascript 형태로 boolean을 써야하는 점입니다.(True/False: X, true/false: O) 구체적인 예제코드로 살펴보겠습니다. import json sample_1..
__init__.py # import # from . 모듈 파이썬 스크립트 파일을 다른 곳에서 호출할 때 그 파일을 모듈이라고도 합니다. 즉, 호출이 되어지는 파이썬 파일은 모듈이라고 합니다. 설명의 편의상 파이썬 파일을 모듈이라고 하겠습니다. 한 디렉토리 안에서 모듈을 호출 하는 것 외에 어떤 디렉토리에 있는 모듈을 외부에서 호출해올 때를 생각해 보겠습니다. p_test.py [ inner ] i_test.py inner 디렉토리 안의 i_test.py에 아래 함수를 작성 # inner/i_test.py def inner_add(a,b): print(a+b) 이제 p_test.py에서 inner/i_test.py의 inner_add 함수를 몇가지 방식으로 호출해서 실행해봅시다. 1) from [디렉토리] import [모듈] from inner impor..

728x90
반응형