【发布时间】:2021-06-08 21:30:58
【问题描述】:
更新:2021-06-09:在下面添加了代码示例 更新:2021-06-10:反馈后编辑代码
我有以下情况,非常感谢您的帮助。
利用 Post/Redirect/Get 设计模式,我使用 Django Forms 创建了一个表单。 然后这会重定向到带有 HttpResponseRedirect 的页面。我已经为该页面创建了一个视图,并且该部分工作正常。
我想使用重定向页面上的表单数据 (form.cleaned_data) 将 (form.cleaned_data) 值动态插入到 sql 脚本并使用模板显示结果。
一切顺利,但我只是没有成功传递表单数据。
什么有效:
- 表单(以及带有该表单的视图)。
- Sql 功能有效,没有动态添加表单数据,所以现在是静态 sql。
- 模板工作正常
- 重定向工作正常。
如您所见,一切正常,但我无法使其动态化。
如何捕获清理后的表单数据并将其传递/转发到使用 HttpResponseRedirect 加载的页面(视图)(即使用 GET 方法加载的页面)?
非常感谢您。
views.py
class TestView(FormView):
template_name = 'app_testing/testform.html'
form_class = TestForm
# success_url = '/app_testing/testformresult.html'
def form_valid(self, form):
cl_ref_num = form.cleaned_data['cl_ref_num']
test = 'test'
print(f'cl ref num in form validation in class TestView = {cl_ref_num}')
print(f'test in form validation in class TestView = {test}')
return redirect(reverse('testformresult'), cl_ref_num=cl_ref_num, test=test)
class TestResultView(TemplateView):
template_name = 'app_testing/testformresult.html'
def get_context_data(self, *args, **kwargs):
ctx = super(TestResultView, self).get_context_data(**kwargs)
cl_ref_num = kwargs.get('cl_ref_num')
test = kwargs.get('test')
print(f'cl ref num after redirect in class TestResultView = {cl_ref_num}')
print(f'test after redirect in class TestResultView = {test}')
return ctx
使用动态值 {xx} 在重定向页面上运行的 sql 查询应在从 SearchTransaction 重定向到 SearchTransactionResult 时传递
def test_payment(xx):
query = f"""select *
from table p
where 1=1
and p.something = '{xx}'
"""
with connections['testing'].cursor() as cursor:
cursor.execute(query)
headers = [row[0] for row in cursor.description]
data = cursor.fetchall()
return headers, data
最诚挚的问候, 皮松
【问题讨论】:
-
好吧,您没有附加任何特定代码(看不到实际用途),但您可以通过多种方式执行此操作 - 会话、消息或特殊视图。提供更多详细信息或代码以获得更多帮助
-
一般不会。您可以使用
redirect("yourapp:yourget_urlpath_name" yourobject.slug之类的东西或类似的东西,然后视图会查找对象并相应地显示。 -
亲爱的,我添加了一些代码来澄清问题。感谢您迄今为止所做的贡献。同时,我会查找是否可以通过会话解决此问题,但我仍然会感谢您的解决方案。 @quqa123 你说的“信息或特殊观点”是什么意思?
标签: python python-3.x django django-views django-forms