Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用从Django中以前提交的HTML表单中收到的数据预填充表单?_Python_Html_Django - Fatal编程技术网

Python 如何使用从Django中以前提交的HTML表单中收到的数据预填充表单?

Python 如何使用从Django中以前提交的HTML表单中收到的数据预填充表单?,python,html,django,Python,Html,Django,我正试图用我提交到上一个HTML页面(也是ModelForm)的一些数据填充我的ModelForm。 我只想把它传递到另一个表单,这样就不必写两次 我尝试过stackoverflow的两个解决方案,但它们已经有6年多的历史了,有点过时,而且也无法从django文档中找到解决方案 我有两个型号,它们有相同的字段,分别是name和boxid 我需要将它从第一个输入传递到第二个输入(以填充它) forms.py views.py addperson.html和addcashier.html {%ext

我正试图用我提交到上一个HTML页面(也是ModelForm)的一些数据填充我的ModelForm。 我只想把它传递到另一个表单,这样就不必写两次

我尝试过stackoverflow的两个解决方案,但它们已经有6年多的历史了,有点过时,而且也无法从django文档中找到解决方案 我有两个型号,它们有相同的字段,分别是
name
boxid
我需要将它从第一个输入传递到第二个输入(以填充它)

forms.py

views.py

addperson.html和addcashier.html

{%extends“main/base.html”%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
乌诺斯一号多达文杰预板
{%endblock%}

非常感谢您的帮助和/或提示。

要预填充表单,您需要在初始化表单以进行
GET
调用时传递一个参数
initial={}
。由于要将数据从一个视图传递到另一个视图,因此应该使用

然后在第二个视图中,使用会话中的这些数据初始化表单

def addcashier(request):

    if request.method == 'GET':
        # get the form data from the request.session
        form_data = request.session.pop('person_form', {})
        box_id = form_data.get("person_boxid")
        name = form_data.get("person_name")

        form = NewCashierForm(initial={"cashier_name":name, "cashier_boxid":box_id})  # initialize the form with the data

    else:
        form = NewCashierForm(request.POST)
        if form.is_valid():
            fs = form.save(commit=False)
            fs.user = request.user
            fs.save()

            return redirect('/byauthor')
    return render (request, 'main/addcashier.html', {'form':form})


Django的FormAPI在过去六年中没有任何变化,所以任何解决方案都应该仍然有效。感谢您提供的解决方案!它还帮助我了解其他事情。
def addcashier(request):

    if request.method == 'GET':
        form = NewCashierForm()
    else:
        form = NewCashierForm(request.POST)
        if form.is_valid():
            fs = form.save(commit=False)
            fs.user = request.user
            fs.save()

            return redirect('/byauthor')
    return render (request, 'main/addcashier.html', {'form':form})

def addperson(request):

    if request.method == 'GET':
        form = NewPersonForm()
    else:
        form = NewPersonForm(request.POST)
        if form.is_valid():
            fs = form.save(commit=False)
            fs.user = request.user
            fs.save()

            return redirect('/addcashier')

    return render (request, 'main/addperson.html', {'form':form})
{% extends "main/base.html" %}


{% block content %}

    <form method="POST">
        {% csrf_token %}

        {{form.as_p}}

        <button class="btn" type="submit">Unos i dodavanje pretplate</button>
    </form>

    <input type="button" value="Otkazi unos" onclick="window.history.back()" /> 

{% endblock %}
def addperson(request):

    if request.method == 'GET':
        form = NewPersonForm()
    else:
        form = NewPersonForm(request.POST)
        if form.is_valid():
            fs = form.save(commit=False)
            fs.user = request.user
            fs.save()
            request.session["person_form"] = request.POST.dict()  #save the form as a dict in request.sessions

            return redirect('/addcashier')

    return render (request, 'main/addperson.html', {'form':form})

def addcashier(request):

    if request.method == 'GET':
        # get the form data from the request.session
        form_data = request.session.pop('person_form', {})
        box_id = form_data.get("person_boxid")
        name = form_data.get("person_name")

        form = NewCashierForm(initial={"cashier_name":name, "cashier_boxid":box_id})  # initialize the form with the data

    else:
        form = NewCashierForm(request.POST)
        if form.is_valid():
            fs = form.save(commit=False)
            fs.user = request.user
            fs.save()

            return redirect('/byauthor')
    return render (request, 'main/addcashier.html', {'form':form})