Django提取值并在另一个页面中使它们成为占位符
Posted
技术标签:
【中文标题】Django提取值并在另一个页面中使它们成为占位符【英文标题】:Django extracting values and making them placeholders in another page 【发布时间】:2018-12-05 15:24:02 【问题描述】:所以在我的第一个网页上,我有一个提交按钮,其中包含值标签中我需要的一系列信息。
<button type="submit" name="editEntry" value="[ entry.id , entry.first_name , entry.last_name , entry.country , entry.city , entry.salary ]">Edit</button>
在我的view.py中,我为value标签中的每个提取信息设置了变量。
def post(self, request):
form = AddUser(request.POST or None)
context = 'form': form
if 'editEntry' in request.POST:
values = request.POST['editEntry']
id_num = values[0]
first_name = values[1]
last_name = values[2]
country = values[3]
city = values[4]
salary = values[5]
return redirect('/edit')
现在在我的编辑页面中我有一些输入标签
<input type="hidden" name="id_num" value="">
<input type="text" name="first_name" placeholder="First Name" value="">
<input type="text" name="last_name" placeholder="Last Name" value="">
<input type="text" name="city" placeholder="City" value="">
<input type="text" name="country" placeholder="Country" value="">
<input type="text" name="salary" placeholder="salary" value="">
如何获取从第一个网页中获得的变量,并将它们作为值放入编辑页面的输入标签中?
【问题讨论】:
【参考方案1】:如果您只想将一些值从一个页面传递到另一个页面,request.sessions
将是最佳解决方案。
def post(self, request):
form = AddUser(request.POST or None)
request.session['form_detail'] = # create session
context = 'form': form
if 'editEntry' in request.POST:
values = request.POST['editEntry']
request.session['form_detail']['id_num'] = values[0]
request.session['form_detail']['first_name'] = values[1]
request.session['form_detail']['last_name'] = values[2]
request.session['form_detail']['country'] = values[3]
request.session['form_detail']['city'] = values[4]
request.session['form_detail']['salary'] = values[5]
return redirect('/edit')
然后在模板中你可以调用这些存储在会话中的值
% with session=request.session.form_detail %
<input type="hidden" name="id_num" value=" session.id_num ">
<input type="text" name="first_name" placeholder="First Name" value=" session.first_name ">
<input type="text" name="last_name" placeholder="Last Name" value=" session.last_name ">
<input type="text" name="city" placeholder="City" value=" session.city ">
<input type="text" name="country" placeholder="Country" value=" session.country ">
<input type="text" name="salary" placeholder="salary" value=" session.salary ">
% endwith %
【讨论】:
【参考方案2】:自从发布 django 1.2 以来,您无法通过重定向传递上下文。您可以进行 hack。我不是这个的忠实粉丝。
def post(自我,请求): form = AddUser(request.POST or None)
context = 'form': form
if 'editEntry' in request.POST:
values = request.POST['editEntry']
id_num = values[0]
first_name = values[1]
last_name = values[2]
country = values[3]
city = values[4]
salary = values[5]
redirect_url = '/edit?'+'value='+values+'&id_num='+id_num+'&first_name='+first_name+'&last_name='+last_name+'&country='+country+'&city='+city+'&salary='+salary
return redirect(redirect_url)
这就是想法。请检查网址是否正确形成。一旦你在 url 中有这些,你可以很容易地提取它们,如下所示:
function get_url_params(param)
main_dict=
arr=window.location.href.split('?')[1].split('&')
for(var i=0; i<arr.length;i++)
main_dict[arr[i].split('=')[0]] = arr[i].split('=')[1];
return main_dict[param])
定义此函数后,您可以:
var first_name = get_url_params('first_name');
document.getElementsByName('first_name')[0].value = first_name
对其余参数执行此操作。
【讨论】:
那么如何提取重定向url信息放入输入值标签?还有一种方法可以在 django 1.3 中执行此操作吗? window.location.href.split('?')[1].split('&') 这将为您提供键值对数组。拆分该数组的每个元素以获取键和值。 function get_url_params(param) main_dict= // console.log(param); arr=window.location.href.split('?')[1].split('&') for(var i=0; i 上面的函数可以帮助你获取参数。示例:get_url_param('country'); 无论如何用模板语言来做这个?以上是关于Django提取值并在另一个页面中使它们成为占位符的主要内容,如果未能解决你的问题,请参考以下文章