Html 发布表单数据,然后呈现新模板
因此,我的HTML中有一个表单如下所示:Html 发布表单数据,然后呈现新模板,html,django,forms,post,Html,Django,Forms,Post,因此,我的HTML中有一个表单如下所示: <form id="passer" method="POST" action="{% url 'Sizer:printView' %}"> {% csrf_token %} <input type="hidden" id="vals"> <input type="submit" value="Print all selected items" id="printBut"> </form&g
<form id="passer" method="POST" action="{% url 'Sizer:printView' %}">
{% csrf_token %}
<input type="hidden" id="vals">
<input type="submit" value="Print all selected items" id="printBut">
</form>
def printView(request):
to_print = str(request.POST.get('vals'))
template = "Sizer/printview.html"
context = {'to_print':to_print}
return redirect('requested_print_data', to_print)
def requested_print_data(request):
all_data['to_print'] = #Dont know how to get my variable
template = "Sizer/printdata.html"
context = {'all_data':all_data}
return render(request, template, context)
我请求的打印数据视图(我要在其中呈现新模板)如下所示:
<form id="passer" method="POST" action="{% url 'Sizer:printView' %}">
{% csrf_token %}
<input type="hidden" id="vals">
<input type="submit" value="Print all selected items" id="printBut">
</form>
def printView(request):
to_print = str(request.POST.get('vals'))
template = "Sizer/printview.html"
context = {'to_print':to_print}
return redirect('requested_print_data', to_print)
def requested_print_data(request):
all_data['to_print'] = #Dont know how to get my variable
template = "Sizer/printdata.html"
context = {'all_data':all_data}
return render(request, template, context)
因此,在表单提交时,计算值并存储到表单中,URL将从发布位置获得额外的部分(www.example.com/printables--On submit->www.example.com/printables/printview/),但模板将保持不变
我已经被困在这个一两天了,所以任何帮助都将不胜感激
按要求编辑:jQuery:
$('#passer').submit(function(){
console.log("Inside click");
var selected = [];
var $vals = "";
$('.datatable').find('input[type="checkbox"]:checked').each(function(){
selected.push($(this).attr('value'));
});
$.each(selected, function(index, val){
$vals+= val + ',';
});
console.log($vals)
$("#vals").val($vals)
可以在printView本身中渲染输出。无需编写其他视图。将printView更改为
def printView(request):
to_print = str(request.POST.get('vals'))
template = "Sizer/printdata.html"
context = {'all_data':to_print}
return render(request, template, context)
你应该读整页。另外,如果要在另一个视图中获取发布的数据,则需要一个模型或将其存储在会话中,然后在下一个视图中检索。@cdvv7788谢谢,我现在就通读一遍。它不必转到另一个视图,我的目标是将jQuery计算的数据放到另一个模板中,这样我就可以用它呈现一些数据。有人告诉我,如果没有模型和会话(这是我想要避免的),这是可能的。谢谢你的回答,但是这并不能解决我的问题。我仍在更改URL(更改为正确的URL),但它加载了相同的模板,并忽略了视图中声明的模板。@J.scul您可以粘贴您使用的jquery代码吗?为什么?因为如果数据正确发布到新视图,并且我已更改了模板,如果
Sizer/printdata.html
和Sizer/printview.html
不同,则应正确呈现新数据。在问题中添加了jQuery,printview的用途是什么?我可以看到视图没有做任何新的功能,它只是将发布的数据返回到新请求的打印数据。一个用户告诉我将其提交到一个视图,然后重定向到另一个视图并从那里呈现模板。我不同意,但我已经同意了。只要满足将jQuery中计算的数据放入printdata.html模板的要求,我就不介意删除其他函数!