django-templates - 上下文字典未在视图中通过渲染
问题描述
好吧,我一直在互联网上寻找解决方案,有一些明显的东西我错过了,但到目前为止还不好。
我目前无法通过我的视图将上下文字典传递给 Django 中的模板。到目前为止,除了我传递给模板的字典之外,其他所有内容似乎都返回了。
def search_subjects(request):
"""
This is our search view, at present it collects queries relating to:
- Subject ID
- Study Name
- Date Range Start
- Date Range Start
Then validates these entries, after which it redirects to the search
results view.
:param request:
:return: Redirect to search results if search button is pressed and form fields
are valid or renders this view again if this request is not POST
"""
if request.method == 'POST':
form = SearchForm(request.POST)
if form.is_valid():
search_dict = {}
search = form.save(commit=False)
search.subject_search = request.POST['subject_search']
search.study_search = request.POST['subject_search']
if request.POST['date_range_alpha'] and \
dateparse.parse_datetime(request.POST['date_range_alpha']):
search.date_range_alpha = request.POST['date_ranch_alpha']
else:
search.date_range_alpha = EPOCH_TIME
if request.POST['date_range_omega'] and \
dateparse.parse_datetime(request.POST['date_range_omega']):
with_tz = dateparse.parse_datetime(request.POST['date_range_omega'])
search.date_range_omega = with_tz
else:
search.date_range_omega = timezone.now()
search.save()
for k, v in form.data.items():
search_dict[k] = v
print(search_dict)
return render(request, 'dicoms/search_results.html', search_dict)
else:
form = SearchForm()
return render(request, 'dicoms/search.html', {'form': form})
我的模板在这里:
!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Search Results</title>
</head>
<body>
Here's what you searched for:
<div>{{ search_dict }}</div>
</body>
</html>
我要回来的页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Search Results</title>
</head>
<body>
Here's what you searched for:
<div></div>
</body>
</html>
我到底在这里想念什么?
解决方案
好的,所以我暂时离开了这个问题并设法解决了它。我没有正确传递上下文字典。修复如下:
search.save()
context = {'search': search}
return render(request, 'dicoms/search_results.html', context)
相应地调整模板:
Here's what you searched for:
<div>{{ search.subject_search }}</div>
<div>{{ search.study_search }}</div>
<div>{{ search.date_range_alpha }}</div>
<div>{{ search.date_range_omega }}</div>
结果是:
Here's what you searched for:
<div>herp </div>
<div>herp </div>
<div>Jan. 1, 1970, midnight</div>
<div>Feb. 26, 2019, 11:05 p.m.</div>
如果我信任 django 并在一开始就简单地传递了整个搜索对象,我就不会在这里结束。但你生活和学习。
推荐阅读
- libreoffice-writer - 如果样式为“文本正文”,则无法应用自动更正
- python - 如何选择元素中的文本,复制它,然后将其粘贴到页面的其他位置?Selenium webdriver python;
- reactjs - Next.js - Store 不适用于动态导入组件的子组件
- opencv - 使用 python opencv 库的自适应阈值错误
- object-detection-api - 使用 TensorFlow2 对象检测 API 检测各种纵横比对象
- c# - 使用 Visual Studio 2019 社区模拟 Linq 扩展方法是不可能的吗?
- r - ggplot axis.title 与axis.label在同一行/列
- postgresql - 如何通过重叠 jsonb 值来连接表?(PostgreSQL)
- elasticsearch - 如何在不更改我的应用程序代码的情况下加密/解密 Elasticsearch 中的字段
- c# - 从资源管理器拖放到 wpf 元素