iT邦幫忙

0

Django問題:'str' object has no attribute 'objects'

  • 分享至 

  • xImage

我想要做一個可以從arduino讀取動態數據的網站,不用重新整理就會一直更新,目前得知遇到的問題是datas從getData()方法返回的是字符串類型,但不能用字符串類型要先將它反序列化才行,但我試了好幾次還是一直失敗,所以想請問大家是否有甚麼方法可以幫助我,或是有其他方法可以讀取動態數據放在網站,感謝大家的幫助,謝謝。

view.py

from django.http import JsonResponse
from django.shortcuts import render

def getDatas():
    
    serialPort = "COM4"
    baudRate = 9600
    ser= serial.Serial(serialPort,baudRate,timeout=0.5)
    
    
    while True:  
        ser.write('a'.encode())
        sleep(1)
        ser.write('b'.encode())
        sleep(1)
        
        str =ser.readline().decode() # 获取arduino发送的数据
        if str.strip()!='':

            print(str)
            updata_time=datetime.datetime.now().strftime('')
            print(updata_time)
            return str,updata_time

 
def index(request):
    global i        # 同步全局變量
    i += 1         # 監測按鈕點擊事件
    if i != 1:
         print("已點擊重新整理")
    else:
        print("初載")
 
    datas=getDatas()[0]
    context={
        'data':datas,  
    }
    context = {"data1":datas.objects.order_by("-time")[0].temp1,
        "data2":datas.objects.order_by("-time")[0].temp2}
    context["name"]="量測系統"
    return render(request,"index.html",context) # 通過render模塊把index.html這個文件返回到前端

index.html

<script>
            $(document).ready(function(){
                function refresh(){
                    $.getJSON("/index/", function (ret) {
                        $('#result').html(ret.data1);
                        $('#result2').html(ret.data2);
                    })
                }
                setInterval(refresh, 3000)
            })
        </script>

錯誤呈現
![https://img.onl/2zlNzk]https://img.onl/2zlNzk

froce iT邦大師 1 級 ‧ 2023-01-04 11:54:49 檢舉
1. 你 getDatas寫了個無限迴圈,然後執行一次就return?...我會建議你改成無限迴圈中存入db,並且加點sleep,不要太頻繁寫入。
2. 無限迴圈放在 views.py 中應該會讓你的其他程式堵塞,要放在thread裡。

3. 你傳回的是字串,字串沒有django model裡的關係管理器,當然沒有objects...
依你目前沒用model的現況,datas.objects.order_by("-time")[0].temp1這個根本不可能會過...直接回傳datas[0]就好

程式不是亂拚就好,要搞懂人家每一行為啥這麼寫...
yanhei iT邦新手 5 級 ‧ 2023-01-04 13:48:11 檢舉
非常感謝您給我的建議,很抱歉我確實沒有學得很好,我會試著改改看的,非常感謝!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答