일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- flask
- 추천 영상
- 링크
- 장고
- 코딩
- 그리디 알고리즘
- 깃허브
- 파이썬
- pymongo
- selenium
- Django
- 바로학교
- 아이폰
- DB
- 유튜브
- 알고리즘
- python
- nocookie
- Google Drive
- List
- 탐욕 알고리즘
- 충북
- gpu 병렬처리
- MongoDB
- 구글 드라이브
- 리스트
- docker-compose
- venv
- G-Suite
- 단축어
- Today
- Total
목록Django (12)
SSAMKO의 개발 이야기
개발 초기에 model 이름을 변경한다던지 column을 추가한다던지 할 경우 기존의 migration 파일과 충돌이 나거나 migration파일이 지저분해지는 경우가 생기는데, 이럴때는 한번씩 migration file을 초기화 해주는 것이 좋다. 1. db 삭제 먼저 기존의 DB를 삭제해준다. (mariaDB/mysql)DROP DATABASE {database}; 2. 모든 migrations 스크립트 삭제 다음으로 모든 migrations 스크립트를 삭제한다. 이때 주의할 점은 프로젝트 폴더 내에 가상환경(venv)이 있을 경우 가상환경 내의 migration 모듈이 함께 삭제되지 않도록 해주어야한다. (아래 참고) 1. project home 디렉토리로 이동 2. find . -path "\*/..
아래와 같이 test코드를 짤 때, APIClient를 활용해 post로 보내면서 format을 'json'으로 지정해주면 from rest_framework.test import APIClient client = APIClient() response = client.post("/api/hi/", {"some":"data"}, format="json") view에서 처리할때는 request.POST대신 request.body를 사용해서 받아주면 된다. class DockingView(View): def post(self, request): body = request.body # body = {"some":"data"}
api 개발 후 각 api의 응답시간을 체크해 성능지표를 만들고자 할 때, 간단히 사용할 수 있는 코드. unittest, pytest, locust 같이 테스트를 위한 도구들이 있지만, 간단히 응답 시간 정도만 체크하고 싶어서 작성한 코드입니다. import os import requests import datetime import time class valid_api: def __init__(self, count=10): self.host = 'http://localhost/' self.urls = [ 'schedule', 'segments/goods', 'rec_prod', 'rec_prod/user', 'rec_prod/user/hourly', ] self.result = dict() self.c..
외부에 API를 제공할때, 해당 URI로 아무나 접근하는 것을 막기 위해 간단하게 적용할 수 있는 방법으로 크게 두 가지가 있다. 첫번째로는 django settings.py에서 ALLOWED_HOST를 수정하여, white list를 구성하는 방법이 있는데, 이 방법은 소수의 제한적 접근을 허용할때는 유용하지만, 요청할 대상이 많아지면 힘들어진다. 이때는 간단히 토큰을 제공하는 방법으로 해결할 수 있다. 이 토큰을 여러 method에 손쉽게 적용할 수 있도록 데코레이터를 사용했다. # decorator.py from functools import wraps from django.core.exceptions import PermissionDenied def check_token(func): """Deco..
대용량 파일을 local DB가 아닌 GCS나 AWS S3에 저장하기 위해, 혹은 mongodb같은 써드파티 DB를 사용하는 서버에서, 파일을 단순히 업로드 받아 처리해야할 경우가 있다. 그럴경우엔 forms.py나 model.py 작성없이 바로 views.py에서 작성 가능하다. from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt from django.views.decorators.http import require_POST from .. import FileManager as fm @csrf_exempt @require_POST def recommend_user_prod(request): fm..
Django를 API서버로만 이용할 때, 외부 사용자들에게 header를 통해 인증정보를 받아야 할 경우가 있다. 이때, Test코드에서도 이를 처리해야 하는데, TestCase의 client에서 요청을 보낼때, from django.urls import reverse from django.test import TestCase class AircodeAPITests(TestCase): def test_schedule(self): url = reverse("send_schedule") header = {'HTTP_TOKEN':'afaew$@m#iow23!3@29fafewm@*'} response = self.client.post(url, **header) 위와 같이 client.post() 혹은 clien..
Django를 이용해 백엔드 서버를 구성할 때, 큰 장점 중 하나인 테스트 코드 작성에 대해 알아보겠습니다. 테스트 코드를 작성하면, 사람이 손으로 직접 테스트를 하는 것보다 훨씬 빠르고, 정확하게 테스트를 진행할 수 있습니다. django에서는 이 작업을 편리하게 도와주는 Test도구들이 있습니다. 이 중에서 TestCase를 사용해 간단히 API Test를 위한 코드를 작성해보겠습니다. 먼저, django app을 만들면 자동 생성되는 tests.py를 삭제하거나 이름을 변경해줍니다. model, form, views 등을 각각 테스트할 수 있도록, test_model, test_form, test_views 처럼 각각의 파일을 만들어줍니다. 이는 각각의 테스트 코드를 별도로 작성하고, 진행할 수 있..
1. settings > Allowed Host settings.py 에서 ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*'] pip freeze > requirements.txt 2. 파일 배포 git clone scp ftp 3. venv python3 -m venv source venv/bin/activate 4. pip install -r requirement 5. GCP 방화벽 2021/01/11 - [GCP, AWS] - [GCP] 방화벽 규칙 만들기 6. ubuntu firewall - ufw 아래 커맨드를 이용해 8000포트를 개방한다. sudo ufw allow 8000/tcp 개방되었는지 확인하기 위해 아래 커맨드를 사용한다. sudo ufw status ve..