私はdjangoテンプレートに2つのリストを渡して、希望の出力を得るためにいくつかのロジックを実行しようとしています。しかし、私はページをロードしようとすると、私は以下のエラーを取得しています。Python、Django - 'list'オブジェクトには属性 'push'がありません
誰でもお手伝いできますか? おかげでレンダリングする3番目の引数は値にマッピングする辞書名でなければなりません
エラー
Environment:
Request Method: GET
Request URL: http://10.66.118.55/oncall/
Django Version: 1.9.5
Python Version: 2.7.11
Installed Applications:
['oncall.apps.OncallConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/usr/local/lib/python2.7/dist-packages/Django-1.9.5-py2.7.egg/django/core/handlers/base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/dist-packages/Django-1.9.5-py2.7.egg/django/core/handlers/base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/aw/INFTERNAL/oncall/views.py" in index
126. return render(request, 'oncall/rota.html', lstUsers, lstPolicy)
File "/usr/local/lib/python2.7/dist-packages/Django-1.9.5-py2.7.egg/django/shortcuts.py" in render
89. using=using)
File "/usr/local/lib/python2.7/dist-packages/Django-1.9.5-py2.7.egg/django/template/loader.py" in render_to_string
114. template_name, context, context_instance, dirs, dictionary)
File "/usr/local/lib/python2.7/dist-packages/Django-1.9.5-py2.7.egg/django/template/engine.py" in render_to_string
243. with context_instance.push(context):
Exception Type: AttributeError at /oncall/
Exception Value: 'list' object has no attribute 'push'
ビュー
def index(request):
lstPolicy = []
lstUsers = []
for objPolicy in objPolicyData['escalation_policies']:
strPolicyName = objPolicy['name']
if strPolicyName.lower().find('test') == -1:
classPolicy = Policy()
classPolicy.Name = strPolicyName
lstPolicy.append(strPolicyName)
for objOnCall in objPolicy['on_call']:
classUser = User()
classUser.Policy = strPolicyName
strLevel = ''
if objOnCall['level'] == 1:
strLevel == 'Primary on call'
elif objOnCall['level'] == 2:
strLevel == 'Backup on call'
elif objOnCall['level'] == 3:
strLevel == 'Tetiary on call'
classUser.Level = strLevel
classUser.StartDate = getDate(objOnCall['start'])
classUser.EndDate = getDate(objOnCall['end'])
classUser.StartTime = getTime(objOnCall['start'])
classUser.EndTime = getTime(objOnCall['end'])
objUser = objOnCall['user']
classUser.Name = objUser['name']
classUser.Mobile = getUserMobile(objUser['id'])
lstUsers.append(classUser)
return render(request, 'oncall/rota.html', lstUsers, lstPolicy)
テンプレート
{% extends 'oncall/base.html' %}
{% block content %}
{% for pol in lstPolicy %}
<h2>{{ pol.Name {}</h2>
{% for user in lstUsers %}
{% if user.Policy == pol.Name %}
<h3>{{ user.Level }}</h3>
<p>
Mobile: {{ user.Mobile }
From: {{ user.StartTime }} on {{ user.StartDate }}
Until: {{ user.EndTime }} on {{ user.EndDate }}
</p>
{% endif %}
{% endfor %}
{% endfor %}
{% endblock %}
完全なトレースバックを表示してください。このコードのどこでも 'push 'を呼び出すようには見えません。 –
@DanielRosemanこれはすごく新しいことですが、今必要な機能を実現しませんでした。 – AlexW
関数 'render(request、 'oncall/rota.html'、lstUsers、lstPolicy)の3番目のパラメータはfalseです。ドキュメントをもう一度読む[ショートカットレンダリング](https://docs.djangoproject.com/ja/1.9/intro/tutorial03/#a-shortcut-render) – qvpham