python - Django从视图中确定模板中复选框的值
问题描述
我一直在尝试在 Django 中设计一个如下工作的页面。
我的“list_books.html”页面列出了交给它的所有书籍对象。
我在views.py中有许多函数,它们确定将使用什么值来确定该页面上显示的书籍(即作者的所有书籍,系列中的所有书籍,具有相同出版年份的所有书籍)
前任。
@with_person_email
def book_list_author(request, person):
return show_book_list(request, person.books, { 'author': person })
def show_book_list(request, blist, template_args, **kwargs):
# this is just the defaults, will be replaced by data.update below
data = { 'genre': None }
try:
# filters the list based on the keyword arguments
blist = dataview.book_list(blist, **kwargs)
except dataview.DataViewError as e:
blist = None
data['error'] = str(e)
try:
data['books'] = RequestPages(request, blist, desc=True)
except Exception as e:
if not utils.is_db_regex_exception(e):
raise
data['books'] = None
data['error'] = 'Invalid regex.'
data['genres'] = models.Genre.objects.order_by('kind', 'name')
data.update(kwargs)
data.update(template_args)
return render(request, 'book_list.html', data)
book_list.html 有一个 for 循环,它遍历每本书并打印有关它的信息。但是,我在名为“is_archived”的图书模型上有一个布尔值。
我希望能够在 book_list.html 的书上设置“is_archived”,并过滤在存档和未存档之间显示的书。我目前可以使用一个调用以下函数的表单来完成这两件事,该函数只处理已归档的书籍。但是,此表单不知道之前的图书排序标准是什么,因此它显示了所有已归档的图书。
def commit_list_archived(request):
return show_commit_list(request, models.Books.objects.filter(is_archived=True), { 'archived': True })
布尔值的设置是通过一个简单的按钮来完成的,该按钮调用一个更改布尔字段的视图,然后返回到上一页。
我希望能够在存档和非存档书籍之间切换。我尝试使用<input type="hidden" name="next" value="{{ request.path }}">
存档帖子的表格来确定以前的标准(作者、年份、流派等),但这似乎不起作用。
我还考虑使用一个复选框来切换正在显示的书籍,但我无法确定如何访问复选框表单视图的信息。
为了清洁起见,我想保留在 books_list.html 页面上,并将其交给已归档或未归档的书籍。同样,问题是找到某种方法在查看存档书籍之前和之后调用正确的函数,以确保我仍然按照相同的标准进行排序。
任何帮助将非常感激。
解决方案
无视我想通了。我刚刚发送了一个查询参数 ?archived=true 并让视图检查此参数并相应地过滤他们发送到 html 模板的提交
推荐阅读
- excel - 使用 Worksheet_Change(和/或 Worksheet_Calculate)更新源单元格
- python - 从带有子进程的nodejs应用程序调用时python无法正常工作
- html - 如何将 url 添加到选择输入的选项?
- awk - awk 不打印输出到辅助文件,语法错误?
- arrays - 从三个数组中找到每个元素的最大乘积
- linux - 如何将包含私有 ssh 密钥的字符串写入文件?
- php - 如何配置 Apache (.htaccess?) 以使用 mod_rewrite 将虚拟路径传递给 PHP 文件?
- ruby-on-rails-5 - 我应该使用演示者还是装饰者?
- c++ - 不同类的虚函数共享相同(无效?)内存地址
- selenium - 有没有办法使用硒比较两个文本文件的内容?