我想向 1 個 Django 模板發送大量資料(在 1 個特定頁面上顯示)。
資料來自 2 個來源:
- 至少 1 個串列,其中包含許多字典(我無法更改任何內容,它來自 Google Ads API)。
- 許多變數(我可以更改它們,例如,必要時將它們變成字典或元組)。
變數非常簡單,類似于“ variable = other_variable / 100 ”(只有 1 個值,不需要鍵),所以我不需要將變數轉換為字典。
但我已經理解(可能是錯誤的)Django 渲染中的“背景關系”需要字典。
變數的資料來自串列(我使用一些串列值進行了一些計算),但這可能與我的問題無關。
現在我在我的views.py中做這樣的事情:
campaign_data = []
CODE TO FILL THAT LIST WITH API DATA (MANY DICTIONARIES INSIDE)
clicks = sum(data['campaign_clicks'] for data in campaign_data)
sum_clicks = {"sum_clicks" : clicks}
context = {
'campaign_data' : campaign_data,
'sum_clicks' : sum_clicks
}
return render(request, 'testing.html', context)
然后在 Django 模板上,我使用 views.py 中的資料,如下所示:
{% for element in campaign_data %}
{{ element.campaign_name }}
{{ element.campaign_budget }}
{% endfor %}
{% for key, value in sum_clicks.items %}
{{key}} - {{value}}
{% endfor %}
這可行,但似乎有很多“額外步驟”(創建一個字典,我真的不需要將它提供給背景關系,為只有 1 個鍵值的字典執行回圈......)。
而且我將使用很多這些變數或“額外字典”(不僅僅是本例中的 1),所以這很重要。
有沒有更簡單和/或更有效的方法來做到這一點?
我是 Python 和 Django 初學者,所以我真的不知道自己在做什么。
uj5u.com熱心網友回復:
但是我已經理解(可能是錯誤的)來自 Django 渲染的“背景關系”需要字典。
背景關系是一個字典,但它不需要字典作為值。您可以將任何值傳遞給它。
所以你可以這樣寫:
campaign_data = []
# code to fill that list with API data (many dictionaries inside)
clicks = sum(data['campaign_clicks'] for data in campaign_data)
context = {
'campaign_data' : campaign_data,
'sum_clicks' : clicks
}
return render(request, 'testing.html', context)
然后將其呈現為:
{% for element in campaign_data %}
{{ element.campaign_name }}
{{ element.campaign_budget }}
{% endfor %}
點擊總數 - {{ sum_clicks }}
uj5u.com熱心網友回復:
背景關系確實需要采用字典形式,但是您也可以發送物件實體,例如簡單的類或模型。舉個例子:
class Car:
colour: str
owner_names: List[str]
def __init__(self):
...
您可以發送一個實體作為背景關系:
car = Car(..)
return render(request, 'testing.html', {"car": car})
如果您models.py用于創建資料庫模式,這將特別有用;你可以發送模型實體!
我發現最好的是創建類并將它們視為資料型別,而不是在您的視圖中發送自定義構建的字典。嵌套類也非常強大,可以讓你的代碼保持干凈和有條理。無論哪種方式,只使用字典都不錯,您只需要找到一種適合您的專案的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497994.html
標籤:Python django django-views django-模板
上一篇:無法在url中顯示民意調查
