일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 중량 관리
- pyside6
- 페이지 최적화
- materialized
- 파이썬
- pip 오류
- django role based
- optimization page
- test drive development
- pip 설치
- uiload
- Self ERP
- tensorflow
- django erp
- 재고 관리
- django rank
- django drf
- django
- ERP
- 장고
- orm 최적화
- channels
- QApplication
- qwindows.dll
- pyside6 ui
- 장고로 ERP
- django test
- query 최적화
- qpa_plugin
- Python
- Today
- Total
취미삼아 배우는 프로그래밍
django-channels-database-tableout 본문
django-channels-database-tableout
:: 장고와 채널스를 써서 데이터베이스를 테이블로 뽑아낼 것이다
우선 이에 앞서,
[Django] Channels, 비동기적 채팅 구현하기 - WebSocket (1)
비동기적, 즉 실시간 채팅을 구현하기 위해서 WebSocket 을 사용하고자 하였고, django 에서 이를 가능하게 해주는 Channels 라이브러리를 알아보았습니다. 전체적인 내용은 공식 문서 를 참고하였습니다. WebSock..
ssungkang.tistory.com
이곳의 예제를 한 번은 해보았다.
그치만, 이건 의미를 모르고 그냥 복붙만 했을 뿐이어서
크게 이해를 하지 못했다.
그렇기에 이번엔 맨 땅에 혼자서 저 위의 글만 보고
만들어보고자 했다.
만들기 전 체크리스트
- 나는 채널스를 이해하는가? ㄴ
- 나는 웹소켓을 이해하는가? ㄴ
- 나는 채팅기능 만든것을 이해하는가? ㄴ
- 라우터는 무엇인가? ㄴ
- 웹소켓은 무엇인가? ㄴ
- 아는게 뭔가? ㄴ
그래 나란놈
생판 혼자서는 안되는걸..
그래서 동영상을 참고했다.
이 아저씨 쉬운 단어만 쓰고, 설명을 참 잘한다.
https://buildmedia.readthedocs.org/media/pdf/channels/latest/channels.pdf
여기서는 채널스 독을 다운받을 수 있다.
회사가서 인쇄해서 들고 도망쳐야겠다.
88페이지지만 문제없지.
그나마 다행인건,
라우터를 제외한 기본적인 세팅은
이해한다는 것이다.
#main/settings.py
INSTALLED_APPS = [
'channels', # 추가
]
#추가
ASGI_APPLICATION = 'todo.routing.application'
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('127.0.0.1', 6379)],
},
},
}
그래 이거 넣는게 이해한 전부였다.
* 라우터란 뭘까
:: 돌려주는것
정도의 느낌인 것 같다.
ASGI_APPLICATION -> [settings.py가 위치한 앱폴더]의 routing.application이란 곳의 것을 쓴다
라고 돼있다.
그러면 결국
settings 과 같히 나란히 있는 routing.py 내의 application 이란 것을 쓴다는 것이 된다.
#todo/routing.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddleware
import databasechat.routing
from django.urls import path
from databasechat.consumer import databaseConsumer
from channels.security.websocket import AllowedHostsOriginValidator, OriginValidator
application = ProtocolTypeRouter({
# (http->django views is added by default)
'websocket':AllowedHostsOriginValidator(
AuthMiddlewareStack(
URLRouter([
path('databasechat/',databaseConsumer),
])
)
)
})
|
cs |
import |
description |
AuthMiddlewareStack | 인증자체를 쌓아두고 확인하는 것 |
ProtocolTypeRouter | 프로토콜 타입을 돌려주는 것(라우터) |
URLRouter | URL로 돌려주는 것 |
databasechat.consumer | 내가 작성한 컨슈머 |
AllowedHostsOriginValidator | 맞게 들어온건지 중간검사 하는 것 |
OriginValidator | 실화인지 여부를 체크하는 것 |
*상기 설명은 틀릴 확률이 매우 높음(개인적인 느낌) |
그리고 컨슈머를
작성했다.
#databasechat/consumer.py
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
|
import asyncio
import json
from django.contrib.auth import get_user_model
from channels.consumer import AsyncConsumer
from channels.db import database_sync_to_async
from .models import normaldata
class databaseConsumer(AsyncConsumer):
async def websocket_connect(self, event):
print("connected", event)
await self.send({
"type": "websocket.accept"
})
await self.send({
"type":"websocket.send",
"text":"Hellow!"
})
async def websocket_receive(self, event):
# When Receives
print("receive", event)
async def websocket_disconnect(self, event):
# When Disconnects
print("disconnected", event)
|
cs |
Web socket을 이용해서 Hellow라는 데이터를 전송하는데에 성공했다.
이제 이것을 통해서 데이터베이스를 주고 받고
수정하고
하면 될 듯 하다!
덧.
https://pusher.com/tutorials/live-table-flask
Build a live table using Flask
Use Flask and JavaScript to create a live table with a basic admin backend.
pusher.com
내가 추구하고자 하는 페이지!
이런 식의 데이터테이블을 만들고 싶은건데,
문제는 위의 사이트는
플라스크로 만들어졋다는 것..
최대한 비슷하게 짜긴 짜야겠지만
어떻게 하면 좋을까
* 내가 해결해야할 문제는 이렇다.
- 많은 양의 데이터를 가지각색의 사람들이 다양한 방식으로 쿼리된 화면을 보고 있다고 가정한다.
- 이 다양한 테이블이 쿼리된 화면에서, 각각의 사용자들은 데이터가 변한 값을 즉각즉각 볼 수 있어야 한다.
- 쿼리한 테이블의 로우만큼 채널 수를 늘려서 이에 가입시키고 반영시킬 것인가.
- 아니면 이 리얼타임 데이터베이스를 포기할 것인가..
그래 일단은 REST API로
백엔드 / 프론트엔드를 구분해서
데이터 테이블부터 보여주는걸 해보자.
결국 웹소켓만 연결하고 끝났다.
ANUA..
'파이썬(장고)' 카테고리의 다른 글
20191222 드디어 한 페이지는 완성되간다. (3) | 2019.12.22 |
---|---|
self erp system 만들기 로그.191102 (0) | 2019.11.03 |
python ERP. 모델을 작성해보자.(부제: 삽질일기) (0) | 2019.10.20 |
Python Django . ERP . 모델을 작성해보자. (0) | 2019.10.15 |
Django 로 ERP를 만들어 보려한다. (0) | 2019.10.14 |