簡體   English   中英

從 views.py 訪問模板中的變量 - Django

[英]access variable in template from views.py - Django

這是我第一次弄亂 django,我無法將變量從視圖 function 傳遞到模板 html 文件。

視圖.py

def index(request):
    try:
        ms_identity_web.acquire_token_silently()
        authZ = f'Bearer {ms_identity_web.id_data._access_token}'
        graph_user_picture = requests.get(settings.USERPHOTO,
                                      headers={"Authorization": authZ})
        file = open("Sample/static/user_iamge"+str(ms_identity_web.id_data.username).split(" ")[0]+".png", "wb")
        file.write(graph_user_picture.content)
        file.close()

        clamdata = context_processors.context(request)
        print(clamdata["claims_to_display"]["preferred_username"])
        userdata = requests.get(settings.ENDPOINT+"/"+clamdata["claims_to_display"]["preferred_username"],
                                    headers={"Authorization": authZ}).json()
        print(userdata)
        return render(request, "flow/index.html", userdata)
    except Exception as e: 
        print(e)
        return render(request, "flow/start.html")

我正在嘗試將用戶數據發送到userdata ,如下所示:

<div class="ms-Persona-details">
        <div class="ms-Persona-primaryText">{{ userdata["displayName"] }}</div>
        <div class="ms-Persona-secondaryText">{{ userdata["jobTitle"] }}</div>
        <div class="ms-Persona-tertiaryText">{{ userdata["businessPhones"][0] }}</div>
        <div class="ms-Persona-tertiaryText">{{ userdata["userPrincipalName"] }}</div>
      </div>

但是,我要么沒有在屏幕上顯示任何變量,要么出現如下錯誤:

Could not parse the remainder: '["displayName"]' from 'userdata["displayName"]'

我假設我在 index.html 中缺少一些基本的東西來將變量從 views.py 傳遞到 index.html 文件

這不是 django 模板的工作方式,DTL(django 模板語言)有一些規則。

嘗試這個

 # views
 return render(request, "flow/index.html",  {'userdata':userdata})
 # template
<div class="ms-Persona-primaryText">{{ userdata.displayName }}</div>

參考這個

https://docs.djangoproject.com/en/4.0/ref/templates/api/#rendering-a-context

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM