我已经和它斗争了几天了,我很难过。在views.py函数的顶部,我设置了一个空字典:
variables = {}
通过我的函数,我将值添加到字典
line: 710: variables['isolate_location'] = True
...
line 715: variables['show_request_list']= False
..
line 748: variables['servicerecords'] = service_records_list
..
line 809: variables['form'] = service_record_form
..
..
..
return render_to_response('locations/location_servicerecords.html', variables,
context_instance=RequestContext(request))
不,当我的模板加载我在上面列出的4个值中的3个时出现空(行710,715和& 809)。我只是在我的模板中使用它们。我甚至在返回之前设置变量[' show_request_list'] = True(作为测试),它仍然是null。
以下是我的模板的一部分:
{% if user.is_staff %} {# The add button, ensures add button visible only when user has permission #}
<a href="{% url 'admin:locations_servicerecord_changelist' %}?q={{ location.id }}" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> Admin</a>
<a href="{% url 'location_servicerecords' location.id %}?show_records=1&show_requests=0" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> Service Records</a>
{% if isolate_location == True %}
<a href="{% url 'location_servicerecords' location.id %}?show_records=0&show_requests=1" class="btn btn-default btn-xs"><i class="fa fa-edit"></i> Service Requests</a>
{% endif %}
{% if show_request_list == False %}
<a href="#addServiceRecord" role="button" class="btn btn-info btn-xs" data-toggle="modal" data-target=""><i class="fa fa-plus"></i> Add Service Record</a>
{% elif show_request_list == True %}
<a href="#addServiceRequest" role="button" class="btn btn-info btn-xs" data-toggle="modal" data-target=""><i class="fa fa-plus"></i> Add Service Request</a>
{% endif %}
{% endif %}
关于如何调试此问题的任何想法?如果您需要更多信息,请与我们联系。
更新:我的模板中的if语句已经整理好了。但是,一些字典值仍然是空的。这是一个关键的一个:
上面的变量[&#39; show_request_list&#39;]根据查询字符串值设置为true或false:
if request.GET.get('show_requests', ''):
show_requests = int(request.GET.get('show_requests'))
if show_requests==1:
variables['show_request_list']= True
默认情况下,变量[&#39; show_request_list&#39;]设置为false。
我使用该变量模板来显示变量[&#39; servicerequests&#39;],其构建如下所示:
cur_loc_active_service_reqs = ServiceRequest.objects.filter(location=location_id).order_by(
'-request_made_date')
#Pagination
service_requests_paginator = Paginator(cur_loc_active_service_reqs, RECORDS_PER_PAGE) # Show 25 contacts per page
try:
service_request_list = service_requests_paginator.page(service_request_page)
except PageNotAnInteger:
if service_request_id:
service_request_page = cur_loc_active_service_reqs.filter(service_date__gt=cur_service_rec.service_date).count()/RECORDS_PER_PAGE+1
else:
service_request_page = 1
service_request_list = service_requests_paginator.page(service_request_page)
except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results.
service_request_list = service_requests_paginator.page(service_requests_paginator.num_pages)
if service_request_list:
variables['servicerequests'] = service_request_list
变量[&#39; servicerequests&#39;]应该至少有一条记录,因为我的数据库中有值。当我尝试同时渲染{{servicerequests}}&amp; {{show_request_list}}没有任何显示。
提前致谢。
答案 0 :(得分:2)
问题不在于你的想法。只是True
和False
不会自动出现在模板上下文中,因此(与任何其他不存在的模板变量一样)它们默认为None,并且您的比较失败。
然而,无论如何都没有理由明确地与这些值进行比较。与Python代码一样,您应该只进行布尔测试:
{% if isolate_location %}
...
{% endif %}
{% if not show_request_list %}
...
{% elif show_request_list %}
...
{% endif %}