반응형
장고: 새로운 데이터베이스 항목에서 html 내용을 새로 고치는 방법
저는 장고로 MQTT Dashboard 앱을 개발하고 있습니다.백그라운드에서 실행되는 mqtt 스레드가 있으며, 원격 장치의 데이터를 주기적으로 폴링하여 데이터베이스(MariaDB) 행으로 저장합니다.또한 이 행을 단순 테이블에 표시하는 보기가 있습니다.이제 새 데이터가 나타나면 페이지를 다시 로드하지 않고 이 보기를 새로 고치는 것이 좋습니다. 이 작업을 수행하는 방법이 문제입니다.저는 두 가지 다른 접근법을 생각했습니다.
- JS 사용
setInterval
내용을 주기적으로 새로 고치기 위해 Ajax 호출을 트리거합니다.여기서 문제는 제가 자바스크립트나 jQuery에 능숙하지 않다는 것입니다. 그래서 저는 그것을 어떻게 하는지 간단한 예를 듣고 싶습니다. - 내부에서 데이터를 어떻게든 새로 고칩니다.
on_message
mqtt가 새 데이터를 가져올 때 호출되는 함수입니다.여기서 문제는 그것이 가능한지 조차 모른다는 것입니다.
저는 위의 설명이나 그것을 하기 위한 좀 더 다른, 더 적절한 방법에 대한 설명을 해주시면 감사합니다.내 코드는 다음과 같습니다.
새로 고치고 싶은 콘텐츠가 있는 템플릿의 일부:
<div class="row mb-4 justify-content-center text-center">
<h1 class="text-uppercase text-white font-weight-bold">{% translate "Parameters" %}</h1>
<table id="device-parameters-table">
<thead>
<tr>
<th scope="col">{% translate "Parameter" %}</th>
<th scope="col">{% translate "Value" %}</th>
<th scope="col">{% translate "Unit" %}</th>
</tr>
</thead>
<tbody>
{% for key, value in latest_read_data.items %}
<tr>
<td>{{key}}</td>
<td>{{value.value}}</td>
<td>{{value.unit}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
장치 보기:
def device(request):
clicked = request.GET.get('device_id')
dev = Device.objects.get(id=clicked)
latest_read_data = ReadData.objects.filter(device=dev).order_by('timestamp')
if latest_read_data:
read_data = latest_read_data.values()
read_data = read_data[len(read_data)-1]
read_data.pop('id')
read_data.pop('device_id')
read_data.pop('timestamp')
parameters_get_units(read_data)
context = {'latest_read_data': read_data, 'device': dev}
return render(request, 'dashboard/device.html', context=context)
else:
return HttpResponseRedirect('/dashboard')
언급URL : https://stackoverflow.com/questions/67400370/django-how-to-refresh-html-content-on-new-database-entry
반응형
'prosource' 카테고리의 다른 글
명령 출력을 텍스트인 것처럼 필터링 (0) | 2023.08.16 |
---|---|
프로젝트에서 소스 파일을 독립적으로 컴파일하도록 CLion을 구성할 수 있습니까? (0) | 2023.08.16 |
PHP 디스트럭터 (0) | 2023.08.16 |
nbviewer로 시각화된 ipython 노트북의 셀에서 코드를 숨기는 방법은 무엇입니까? (0) | 2023.08.16 |
C 코드에서 //-style 주석을 사용할 수 없는 이유는 무엇입니까? (0) | 2023.08.16 |