일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- test
- 도커
- customize
- 컨테이너
- 도커컴포즈
- python
- Bash
- nosql
- docker
- sftp란
- iterm2 단축키
- minikube mac 설치
- iterm2 shortcuts
- 빅오노테이션
- Shell
- linux
- AWS
- docker-compose
- zshrc
- 테라폼 문법
- zsh
- 테라폼 기본 문법
- DynamoDB
- server
- BIG-O NOTATION
- Django
- terraform
- terraform 문법
- minikube 설치 방법
- 파이썬
- Today
- Total
목록Django (8)
sklass의 s-class 프로그래밍 blog

아래의 사진은 Menu라는 테이블의 데이터들입니다. shop_id는 Shop이라는 테이블과 연결해주는 Foreign Key 역할을 하는 column입니다. 이런 경우, 만약 shop_id == 1인걸 모두 가져오고 싶다면 어떻게 해야할까요? 아래는 get()을 사용하였을 경우입니다. menu = Menu.objects.get(shop=shop) 위와 같이 에러가나는 이유는 get()의 경우, unique한 데이터를 가져올 때만 사용해야합니다. 즉, 가져오려는 데이터가 2개 이상인 경우, 위와 같은 에러를 리턴합니다. 그렇다면, 2개 이상의 데이터를 가져오고 싶을때는 어떤 함수를 써야할까요? 바로 filter()를 사용하면 됩니다. menu = Menu.objects.filter(shop=shop)

보통 프론트에서 json형태로 오는 요청들은 모두 string으로 변환되어서 옵니다. 하지만 django drf를 사용하면, json으로 오는 요청들을 굳이 json.loads()를 이용해서 dict형태로 바꾸어주지 않아도, drf의 request.data.get()을 사용하면 알아서 바꿔주게 됩니다. 하지만 만약에 요청이 json형식이 아닌, form data형식으로 온다면, request.data.get()을 이용하더라도 자동으로 dict형태로 변환되지 않고, string으로 오기때문에 request.data.get() 후에 json.loads()로 dict 형태로 data를 변경해주어야한다. 만약 아래와 같이 project_id라는 키값으로 1을 보내면, drf의 request.data.get()을..

웹(Web)은 World Wide Web의 줄임말로, www, web, w3 등으로 씁니다. 1989년 3월 컴퓨터 과학자인 Tim Berners-Lee에 의해 만들어 졌습니다. 웹은 http 프로토콜을 통해 html, image, video, sound와 같은 데이터를 주고받습니다. 아래 그림은 클라이언트와 서버간 데이터를 주고받는 과정입니다. 위 그림에서 보듯, 클라이언트는 요청(request)을, 서버는 응답(response)을 담당합니다. 이때 클라이언트란, 인터넷을 통해 서버에 요청할 수 있는 장치를 가리킵니다. 즉, 웹 브라우저를 뜻합니다. 그렇다면 웹 브라우저의 동작 원리를 통해 클라이언트와 서버간 통신 과정을 배워보겠습니다. 네이버에 접속하고 싶다면, 해당 URL 주소(https://www..
django test를 할때 명령어에서 특정 테스트만 테스트하게끔 하고 싶을때 @tag를 사용하면 수월합니다. 아래와 같이 테스트 함수 위에 @tag를 달아주세요. @tag("greeting") def test_hello(self) -> None: print("hello") @tag("introduce") def test_name(self) -> None: print("Joseph") @tag("greeting", "welcome") def test_welcome(self) -> None: print("welcome") 이렇게 하고 아래 명령어를 실행하면 됩니다. python3 manage.py test --tag="greeting" >> hello >> welcome python3 manage.py t..
django에서 test명령어를 실행할때, argument, 즉 option을 추가해서 명령어를 실행하고 싶을때가 있습니다. 이런경우, DiscoverRunner라는 Django Test의 최상위 클래스의 add_arguments()라는 classmethod를 override하면 됩니다. 아래에 예시를 참고하세요. tests/runner.py 에 아래 코드를 추가해줍니다. from django.conf import settings from django.test.runner import DiscoverRunner class TestRunner(DiscoverRunner): def __init__(self, mol_id, conformer_id, **kwargs): super().__init__(**kwar..
Djanog 를 실행시킬때 manage.py 뒤에 오는 명령어들은 흔히 runserver 나 test등을 꼽을 수 있습니다. runserver는 django의 웹서버를 활성화 시켜서 로컬 환경에서 테스트를 용이하게끔 하는것이고, test는 TestCase들이 있다면 테스트할 수 있는 명령어입니다. 이외에도 django를 쓰다보면, 특별한 기능을 명령어를 실행시켜서 만들고 싶을때가 있습니다. 예를 들어서 테스트를 할때 뒤에 --tag 명령어가 너무 많이 붙는다던지, option이 길어져서 이거를 하나의 명령어를 실행시키고 그 명령어가 os.system()으로 길고 복잡한 명령어를 실행시키게끔 할 수도 있습니다. 이를 위해서는 아래와 같이 애플리케이션에 management/commands 디렉토리를 추가하면..