본문 바로가기

728x90
반응형

전체 글

(256)
Python, Django: request QueryDict 다루기 # AttributeError: This QueryDict instance is immutable Django 프로젝트에서, front에서 요청받은 request.POST의 query dictionary를 unpack해서 data를 생성할 때 (예: MODEL.objects.create(**request.POST)) request.POST에서 특정값만 없애고 unpack을 해서 사용하려는 경우, 다음과 같이 시도해보면 not_null_list = ['name','amount', 'period'] missing_item = next((item for item in not_null_list if not request.POST.get(item)), None) del request.POST['action'] Fruit.objects.create(**request.POST) raise AttributeErro..
Django: DB migrations 기록 지우기 Django를 통해 DB 설계를 한 경우 DB의 table에 django_migrations라는 table 생성됨 migrate를 하는 경우에 DB에 그 기록이 저장이 되는 table (migration 오류가 나는 경우에) 해당 table의 특정 app 내의 migration 기록을 지우는 방법 1. Django shell 이용 (터미널) $ python manage.py shell $ from django.db.migrations.recorder import MigrationRecorder $ from django.db import connection $ recorder.Migration.objects.filter(app='').delete() 2. Script로 지우기 from django.db.m..
javascript: event.target vs event.currentTarget html에 onclick에 event 변수를 넣어서 함수를 달아주고, event.target으로 클릭한 태그를 집어내는게 용이합니다. 그런데 경우에 따라서 onclick 에 함수를 달아준 하위 태그를 클릭하더라도 onclick을 달아준 함수를 event의 target으로 해야할 경우가 있는데 event.target은 event 함수가 달린 태그와 하위 태그에 대해서 클릭한 곳을 정확하게 집어냅니다. 정확히 클릭한 곳을 원하는게 아니라 event 함수를 달아놓은 태그를 target으로 하고 싶을 때 event.currentTarget 을 사용하면 됩니다. 아래 예제를 살펴보겠습니다.(보기 편하게 style attr은 지워줬습니다.) HTML (도로명)도로1 (지번)지번1 Javascript function..
주소 API # 행정안전부 # javascript # ajax # xml 행정안전부에서 제공하는 주소 요청 api https://business.juso.go.kr/addrlink/openApi/apiReqst.do API 신청하기 API신청하기 business.juso.go.kr 위 사이트에서 API를 신청하면 됩니다. 목적에 맞게 신청하시고, 개발용은 API키가 최대 90일까지만 유효하기 때문에 장기적으로 쓰셔야 하는 분은 운영으로 선택하고 진행하셔야 합니다. 위와 같이 키를 발급받으셨으면, 이제 ajax를 통해서 값을 받아오도록 하겠습니다. function get_address(page){ let data = { 'confmKey': "YOUR API KEY", 'keyword': searchAddress, 'currentPage': page, } $.ajax({ url..
Django Template: linebreaks vs linebreaksbr Django에서 테이블의 field가 TextField인 경우, 값을 줄바꿈을 해서 저장하는 경우가 있습니다. 이를 Template으로 불러올때, 저장된 줄바꿈을 반영해주기 위해서는 템플릿에서 불러올때 {{some_text|linkebreaks}} // or {{some_text|linebreaksbr}} 위와 같이 필터를 적용해줘야 줄바꿈을 해줄수 있습니다. 이때 linebreaks와 linebreaksbr의 차이는 linebrekas의 경우 some_text에 한줄마다 태그를 입혀서 줄바꿈을 적용합니다. linebreaksbr의 경우 some_text에 있는 한줄마다 태그로 감싸서 줄바꿈을 적용용 합니다. *실제 예시 {{some_text|linebreaksbr}} {{some_text|linebre..
Python: Selenium in Linux # WSL # chromedriver # 예제 코드 Windows에서는 기존에 selenium을 이용하는 python script가 있는 경로에 chromedriver에 위치해놓고 썼다.Linux, 특히 WSL 환경에서 Selenium을 사용하기 위한 방법을 살펴보자 1. chromedriver linux 용을 설치 - 압축 해제 후 chromedriver를 /usr/local/bin에 옮기자sudo mv /home/usr/chromedriver /usr/local/bin/2. 실행권한 주기sudo chmod +x /usr/local/bin/chromedriver* 그외 다른 경로에 넣고 실행하고 싶으면 그 경로 PATH에 등록export PATH=$PATH:/home/user/some_path 아래는 WSL에서 쉽게 마주할 수 있는 에러이다.위와 같이 ..
DB Table 모두 지우고 리셋 # schema DB의 schema schema란 데이터베이스의 구조, 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합 메타데이터? 일반적으로 저장될 데이터를 아울러서(초월해서) 적용될 데이터. DB에서는 모든 테이블들에 적용될 데이터(Rule)라고 보면 됨 - 쉽게 말해서 어떤 테이블의 필드를 Date값으로 받을지, Boolean 값으로 받을지 등의 조건을 명세한 데이터의 집합 -> 이러한 메타데이터의 집합이 그 DB의 Rule이 된다. -> Rule에 위반되는 데이터는 받을 수 없다고 보면 도니다. Rule에 위반되는 데이터는 입력을 받을 수 없다. 따라서 이미 규정한 schema와 다른 형태로 DB에 마이그레이션 해야할 때 Rule이 달라서 안되는 경우가 있다. DB의 데이터들을 날려도 되는 경우라면, 간..
이중 삼중 for문 break # forloop # break 이중 for문을 한번에 두개를 break 해서 빠져나가야할 경우 Tip 변수값에 변화를 줘서 그 변수값을 기준으로 break for i in list_one: for j in list_two flag = False for h in list_three: if some conditon: print("Break!") flag = True break if flag: break flag = False로 두고 flag = True가 되었을 때 바깥 for문에서 break

728x90
반응형