【发布时间】:2015-05-21 21:14:48
【问题描述】:
我正在努力为我的 Django 应用程序提供分页功能。分页在我第一次加载应用程序时有效,但是当我从下拉菜单中获取每页值的新结果数量并在单击下一步按钮时更新页面时,我收到以下错误:
UnboundLocalError 在 /autotester/update_filters/
赋值前引用的局部变量“num_results”
以下是相关代码:
在views.py中:
def filter_report(request):
# More code here with other irrelevant values
if request.method == 'POST':
num_results = request.POST.get('num_results_dropdown')
tuple_table = tuple(table.items()) # table is a dictionary defined above
paginator = Paginator(tuple_table, num_results)
page_num = request.GET.get('page', 1)
page = paginator.page(page_num)
在table.html中
<form id="filter_form" method="post" action="{% url 'update_filters' %}">
<!-- My other filter fields -->
<div class="label">Results</div>
<select name="num_results_dropdown">
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
</select>
</form>
{% if page.has_previous %}
<a href="?page={{ page.previous_page_number }}">prev</a>
{% endif %}
{{ page.number }} of {{ page.paginator.num_pages }}
{% if page.has_next %}
<a href="?page={{ page.next_page_number }}">next</a>
{% endif %}
我的猜测是 num_results 不会被记住,因为当我尝试在 if 语句之外声明 num_results = total_testsuites 时,它会重置为 total_testsuites 并崩溃,因为不再有第 2 页。
【问题讨论】:
-
num_results 是 filter_report 中的局部变量,因此当请求不是 POST 请求时,不会实例化该变量。您是否尝试将其用作全局变量?
-
在一个普通的 Python 脚本中,这正是我要做的,也许不是全局变量,但我会将它传递给
filter_report函数。然而,Django 是不同的,我不完全确定我必须做什么。
标签: python django pagination