Django提取值并将其放置在另一个页面中

时间:2018-06-26 20:18:24

标签: python html mysql django python-3.x

因此,在我的第一个网页上,我有一个提交按钮,其中包含在value标签中需要的一系列信息。

<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="">

如何获取从第一个网页获得的变量并将其作为值添加到编辑页面的输入标签中?

2 个答案:

答案 0 :(得分:0)

自django 1.2发布以来,您无法通过重定向传递上下文。您可以执行 hack 。我不是这个的忠实粉丝。

def帖子(自己,要求):     形式= AddUser(request.POST或无)

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)

这是主意。请检查网址格式正确。在网址中添加这些内容后,您可以轻松地按以下步骤提取它们:

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

对其余参数执行此操作。

答案 1 :(得分:0)

如果您只想将某些值从一页传递到另一页,则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 %}