일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AWS
- web
- 알고리즘
- django widget
- 알고리즘 문제
- Baekjoon
- MAC
- 알고리즘 풀이
- 장고
- form
- c++
- js
- java
- CSS
- es6
- Django
- 알고리즘 연습
- API
- react
- Algorithm
- 파이썬
- django ORM
- javascript
- 백준
- HTML
- Git
- django rest framework
- 파이썬 알고리즘
- PYTHON
- DRF
- Today
- Total
목록Django (84)
수학과의 좌충우돌 프로그래밍
model 을 설계하는데 있어서 관계는 뺴놓을 수 없는 중요한 개념입니다. 각 모델 간에 여러 관계를 정의함으로서 많은 걸을 구현 할 수 있게 됩니다. 관계는 총 3가지가 있으며 이번에는 바로 그 관계에 대해서 알아보도록 하겠습니다. ForeignKey ForeignKey 는 1:N 관계를 의미합니다. 예를 들어 게시글과 댓글을 생각할 수 있습니다. 하나의 글에는 그 글에 해당하는 댓글이 여러 개 존재하게 되므로 ForeignKey 를 만족합니다. django 에서의 사용 예시 class Post(models.Model): # 생략 class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) 1:N 중에서 N 인..
이번 시간에는 데이터베이스에 저장되어 있는 데이터를 불러오는 방법에 대해서 알아보도록 하겠습니다. queryset 이란 이를 위해 빼놓을 수 없는 개념이 바로 queryset 입니다. query 란 데이터베이스에 정보를 요청해주는 것을 의미하며 파이썬으로 작성한 코드가 sql 로 매핑되어 queryset 이라는 자료 형태로 값이 넘어오게 됩니다. 이는 순회가능한 데이터로서 이를 이용하여 1개 이상의 데이터를 불러와 사용할 수 있습니다. queryset 의 특이한 점은 Lazy 한 특성입니다. 미리 db 에 접근해서 값을 불러오는 것이 아니라 출력 등과 같이 필요한 순간에 sql로 매핑되고 이를 통해 db에 접근해 값을 가져오게 됩니다. queryset 생성하기 queryset 에 대해서 알아보기 위해 m..
django 에서 기본적으로 주어지는 admin 페이지는 개발자에게 있어서 많은 편리함을 제공해줍니다. 이를 커스텀하여서 더 효율적으로 사용해보도록 합시다. admin 페이지에 models 등록 # {앱이름}/admin.py from django.contrib import admin form .models import Post # 방법 1 admin.site.register(Post) # 방법 2 class MyAdmin(admin.ModelAdmin): ... admin.site.register(Post, MyAdmin) # 방법 3 @admin.register(Post) class MyAdmin(admin.ModelAdmin): ... models 에는 Post 가 존재하고 이를 import 해와서 ..
model 에 대한 두 번째 포스팅입니다. 저번 포스팅은 django 를 처음 공부하면서 정말 기본적인 내용에 썼다면, 이번에는 공부하면서 좀 더 필요하다고 생각이 된 부분들에 대해서 새롭게 추가해보았습니다. ORM 이란? ORM 이란 object-relational mapping 의 줄임말로서 영어 그대로 해석하면 객체의 관계를 연결해주는 것을 뜻합니다. 데이터베이스는 SQL 로 관리를 하게 되는데 DJango 같은 경우, 파이썬 코드와 SQL 를 매핑 시켜줌으로서 파이썬 코드로도 쉽게 데이터베이스를 다룰 수 있게 됩니다. 좀 더 정확히 말하자면 데이터베이스 테이블 과 models.py 의 파이썬 클래스 를 1대1로 매핑하게 됩니다. 장고의 장점 중 하나로도 ORM 기능이 지원되는 점이 뽑힐 만큼 매력..
vs code 로 디버깅 하는 과정을 알아보겠습니다. 디버깅 하는 방법이야 여러가지 방법이 있겠지만 저는 이전까지 확인하고 싶은 변수를 print 함으로서 확인하는 과정을 거쳤습니다. 하지만 한계점을 많이 드러냈고 이에 따라 제대로 된 디버깅을 하고자 하였습니다. 이번 시간에는 vscode 를 이용하여 더 정확하고 활용성 높은 방법을 알아보도록 하겠습니다. 테스트를 해보기 위해서 간단한 장고 프로젝트를 만들겠습니다. 현재 프로젝트와 core 라는 app 을 만들었고 상황은 다음과 같습니다. # config/urls.py from django.contrib import admin from django.urls import path from core import views urlpatterns = [ pat..
소비자 개선 앞선 포스팅 WebSocket (2) 에서 작성했던 소비자는 동기적으로 작성되어 있습니다. 이렇게 함으로서 django 의 I/O 함수를 쉽게 호출할 수 있어 편리했습니다. 소비자를 비동기식으로 작성하게 되면 요청을 처리할 때, 추가적인 쓰레드를 생성하지 않습니다. 즉 성능 개션을 불러올 수 있는 것이죠. 실시간 채팅같은 경우에는 성능이 굉장히 중요한 요소이기 때문에 이 과정이 필요합니다. 앞에서도 한 번 언급했던 sync_to_async 를 통해서 django 의 동기적인 코드를 비동기적으로 수행하도록 할 수 있지만 지금 사용할 async-native 라이브러리보다 성능이 떨어집니다. # chat/consumers.py from channels.generic.websocket import ..
저번 시간 WebSocket (1)에서는 이론적인 개념들과, 약간의 실습을 진행해보았습니다. 하지만 아직 채팅은 보내지지 않고 에러가 발생하였습니다. 지금부터 그 문제를 해결해보도록 하겠습니다. 소비자 만들기 django의 기본 원리를 생각해보면 HTTP 요청을 받아들이고 매핑된 URL 로 이동, 이에 따라 views 에 함수를 실행합니다. 이와 유사하게 Channels역시 WebSocket 연결을 받아들이면, root routing configuration에서 소비자를 찾은 후에, 이벤트를 처리하기 위한 함수들을 호출합니다. # chat/consumers.py from channels.generic.websocket import WebsocketConsumer import json class ChatC..
비동기적, 즉 실시간 채팅을 구현하기 위해서 WebSocket 을 사용하고자 하였고, django에서 이를 가능하게 해주는 Channels 라이브러리를 알아보았습니다. 전체적인 내용은 공식 문서 를 참고하였습니다. WebSocket 이란? WebSocket은 프로토콜로서, 실시간으로 데이터를 양방향 통신 할 수 있게 해주는 기술 입니다. Socket 이란 쉽게 생각해서 통신을 위한 통로라고 생각하면 됩니다. 이런 통로를 Web 에도 도입하게 되었는데 기존의 Web이 정보를 어떻게 주고 받는지 생각해보면 socket이 필요한 이유를 알 수 있습니다. Web 환경은 필요한 정보를 HTTP 기반으로 Request/Response로 연결하여 데이터를 주고 받아 네트워크의 연결을 유지하지 않는 특징을 가지고 있습..
사용자한테 값을 입력 받을 때, checkbox 나 radio 등을 이용해서 값을 받는 경우도 자주 볼 수 있습니다. django 기본 db인 sqlite3 의 경우에는 이 값을 model 에서는 어떤 필드로 받아주는게 좋을까요? 이에 대해서 알아보도록 하겠습니다. ChoiceField 기본적으로 ChoiceField 는 따로 존재하지 않습니다. 그렇기 때문에 다른 field 에 choice의 기능을 추가해줘야하는데 CharField 를 기본으로 합니다. 예시를 통해서 알아보겠습니다. # models.py from django.db import models class Person(models.Model): NATIONAL_CHOICES = ( ('AD', 'Andorra'), ('AF', 'Afghani..
로그인을 실패했을 때 사용자가 확인 할 수 있도록 알람을 띄워줘야 합니다. javascript alert 을 통해서 알람을 쉽게 띄울 수 있지만 로그인에 성공했을 때, 혹은 실패했을 때 다른 알람을 띄워줘야 합니다. 구현하는 방법이야 다양하겠지만 django 의 messages framework 를 사용해보았습니다. Messages Framework 위의 예시처럼 로그인을 실패하였습니다. 등 과 같은 1회성 메세지를 담는 용도로 사용합니다. 메세지를 남기는 방식은 HttpRequest 인스턴스를 통해 남기며 1회성이기 때문에 새로고침하면 사라집니다. 그렇기 때문에 전체 유저에게 한 번에 메세지를 보낼 수 없고 한 명의 유저에 대해서 메세지를 보낼 수 있습니다. Message level message 에는..