Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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
当我尝试DJANGO时,表单没有循环和显示_Django_Django Forms_Django Views - Fatal编程技术网

当我尝试DJANGO时,表单没有循环和显示

当我尝试DJANGO时,表单没有循环和显示,django,django-forms,django-views,Django,Django Forms,Django Views,我有一个Django的观点,我正在尝试提交和处理 我有一个模型表单,我正试图将其传递给HTML模板。现在有了这个表单,我想循环遍历它,每次我循环遍历它时,我想给字段名添加一个前缀,这样我可以更容易地处理它 我现在看到的是一个视图,它正确地循环遍历每个项目并添加前缀,但是当它被传递并显示到HTML模板时,我只得到通过表单的最后一个模板的结果。我不知道如何实现这一点,我需要做些什么才能让它发挥作用 以下是我的观点: def addTransaction(request, groupId, recor

我有一个Django的观点,我正在尝试提交和处理

我有一个模型表单,我正试图将其传递给HTML模板。现在有了这个表单,我想循环遍历它,每次我循环遍历它时,我想给字段名添加一个前缀,这样我可以更容易地处理它

我现在看到的是一个视图,它正确地循环遍历每个项目并添加前缀,但是当它被传递并显示到HTML模板时,我只得到通过表单的最后一个模板的结果。我不知道如何实现这一点,我需要做些什么才能让它发挥作用

以下是我的观点:

def addTransaction(request, groupId, recordId):
    user = User.objects.get(username='omar')
    group = Group.objects.get(id=groupId)
    record = Record.objects.get(id=recordId)
    transactions = Transaction.objects.all()
    if request.method == 'POST':
        if record.split == 1:
            form = EvenSplitTransactionForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                amount = cd['amount']
                description = cd['description']
                split_amount = SplitEven(record, amount)
                for trans in transactions:
                    if trans.record.id == record.id:
                        trans.description = description
                        trans.amount = split_amount
                        trans.save()
                return redirect('accounts')
        if record.split == 2:
            form = IndividualSplitTransactionForm(request.POST)
        return redirect('accounts')
        #--------------------------------------------------------
    else:
        if record.split == 1:
            form = EvenSplitTransactionForm()
            message = 'fill out the form below'
            parameters = {
                'record':record,
                'form':form,
                'message':message,
                'transactions':transactions,
            }
            return render(request, 'tabs/add_even_transactions.html', parameters)
        if record.split == 2:
            message = 'fill out the form below'
            for trans in transactions:
                if trans.record.id == record.id:
                    print(trans.user.username)
                    form = IndividualSplitTransactionForm(prefix=trans.user.username)
                    print(form)
            parameters = {
                'record':record,
                'form':form,
                'message':message,
                'transactions':transactions,
            }
            return render(request, 'tabs/add_individual_transaction.html', parameters)
下面是表单通过循环时显示的内容

hani
<tr><th><label for="id_hani-amount">Amount:</label></th><td><input id="id_hani-amount" name="hani-amount" step="0.01" type="number" value="0.0" /></td></tr>
<tr><th><label for="id_hani-description">Description:</label></th><td><input id="id_hani-description" maxlength="250" name="hani-description" type="text" /></td></tr>
rana
<tr><th><label for="id_rana-amount">Amount:</label></th><td><input id="id_rana-amount" name="rana-amount" step="0.01" type="number" value="0.0" /></td></tr>
<tr><th><label for="id_rana-description">Description:</label></th><td><input id="id_rana-description" maxlength="250" name="rana-description" type="text" /></td></tr>
amer
<tr><th><label for="id_amer-amount">Amount:</label></th><td><input id="id_amer-amount" name="amer-amount" step="0.01" type="number" value="0.0" /></td></tr>
<tr><th><label for="id_amer-description">Description:</label></th><td><input id="id_amer-description" maxlength="250" name="amer-description" type="text" /></td></tr>
哈尼语 数量: 说明: 拉纳 数量: 说明: 阿默尔 数量: 说明: 下面是正在显示的html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="/static/css/blog.css" rel="stylesheet">
</head>
<body>
    <div id="content">

  <h1>Add members to </h1>

    <p>fill out the form below</p>

  <form action="." method="POST">
    <input type='hidden' name='csrfmiddlewaretoken' value='Gnb1o5rbKqkoegYCX5biYwtZgK3XMXBa' />
    <p><label for="id_amer-amount">Amount:</label> <input id="id_amer-amount" name="amer-amount" step="0.01" type="number" value="0.0" /></p>
<p><label for="id_amer-description">Description:</label> <input id="id_amer-description" maxlength="250" name="amer-description" type="text" /></p>
    <p>Tax: <input type="text" name="tax" value=""></p>
    <p>Tip: <input type="text" name="tip" value=""></p>
    <input type="submit" name="submit" value="submit">
  </form>

    </div>
</body>
</html>

将成员添加到
填写下表

金额:

说明:

税款:

提示:

如何将创建的所有三个表单传递到html模板?如果可能的话,我希望在views.py文件而不是html文件中完成所有处理和分配

更新

这是我拥有的html模板:

{% extends "base.html" %}

{% block content %}
  <h1>Add members to {{record.name}}</h1>
  {% if message %}
    <p>{{message}}</p>
  {% endif %}
  <form action="." method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <p>Tax: <input type="text" name="tax" value=""></p>
    <p>Tip: <input type="text" name="tip" value=""></p>
    <input type="submit" name="submit" value="submit">
  </form>
{% endblock %}
{%extends“base.html”%}
{%block content%}
将成员添加到{{record.name}
{%if消息%}
{{message}}

{%endif%} {%csrf_令牌%} {{form.as_p}} 税款:

提示:

{%endblock%}
您可以在django中使用该功能。
要在模板中使用表单,请在视图文件中添加代码,如:

...
from django.forms import formset_factory
...
ISTFormSet=formset_factory(IndividualSplitTransactionForm,extra=3)
并将
ISTFormset
作为参数传递给模板。
在模板文件中,您可以像这样使用它:

...
<form action="." method="POST">
{% csrf_token %}
{% for form in ISTFormset %}
{{ form.as_p }}
{% endfor %}
<p>Tax: <input type="text" name="tax" value=""></p>
<p>Tip: <input type="text" name="tip" value=""></p>
<input type="submit" name="submit" value="submit">
</form>
...
。。。
{%csrf_令牌%}
{ISTFormset%中的表单的%s}
{{form.as_p}}
{%endfor%}
税款:

提示:

...
我不知道你的表单的实际参数是什么。所以你可以编辑代码,但想法是一样的
您可以通过查看文件中的
for
语句接收post数据。

请参考上面的链接以了解更多信息。有很多功能。

第二个代码片段是模板代码吗?我看不到参数使用的位置。这是我在每个周期打印表单时在命令行中显示的内容…您可以发布您的模板代码吗?html模板代码将在更新后添加到原始发布中,。。。