Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/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
Django 手动呈现的表单字段不保存数据_Django_Forms_Save - Fatal编程技术网

Django 手动呈现的表单字段不保存数据

Django 手动呈现的表单字段不保存数据,django,forms,save,Django,Forms,Save,我真的很想自己解决这个问题,我花了4个多小时在这个问题上,但我现在放弃了 我有一个应该保存数据的表单,如果我用{{form}}标记布局表单,一切都会很好。如果我将带有{{form.client_email}等单个标记的表单放入,表单数据不会保存到数据库中 为了前端的目的,我需要手动渲染这些字段,但我就是不知道怎么做。 我非常感谢你的帮助 这是我的密码 views.py def client_list_view(request): if request.method == 'POST':

我真的很想自己解决这个问题,我花了4个多小时在这个问题上,但我现在放弃了

我有一个应该保存数据的表单,如果我用{{form}}标记布局表单,一切都会很好。如果我将带有{{form.client_email}等单个标记的表单放入,表单数据不会保存到数据库中

为了前端的目的,我需要手动渲染这些字段,但我就是不知道怎么做。 我非常感谢你的帮助

这是我的密码

views.py

def client_list_view(request):
    if request.method == 'POST':
        form = ClientModelForm(request.POST)
        if form.is_valid():
            client_title = form.cleaned_data["client_title"]
            client_email = form.cleaned_data["client_email"]
            client_turkishid_no = form.cleaned_data["client_turkishid_no"]
            client_tax_no = form.cleaned_data["client_tax_no"]
            client_tax_office = form.cleaned_data["client_tax_office"]
            client_contactperson = form.cleaned_data["client_contactperson"]
            client_phone_number = form.cleaned_data["client_phone_number"]
            Client.objects.create(
                client_title=client_title,
                client_email=client_email,
                client_turkishid_no=client_turkishid_no,
                client_tax_no=client_tax_no,
                client_tax_office=client_tax_office,
                client_contactperson=client_contactperson,
                client_phone_number=client_phone_number
            ).save()
            return redirect("books:client-list")
    else:
        form = ClientModelForm()
    
    client_list = Client.objects.all().order_by("client_title")
    context = {'client_list' : client_list, "form": ClientModelForm}
    return render(request, 'clients/client_list.html', context=context)
工作模板

<div id="clientModal" class="modal bottom-sheet">
    <div class="modal-content">
        <form method="POST">
            {% csrf_token %}
            {{form}}
            <button class="btn">Ekle</button>
        </form>
    </div> 
</div>

{%csrf_令牌%}
{{form}}
埃克尔
不工作模板

<div id="clientModal" class="modal bottom-sheet">
    <div class="modal-content">
        <div class="row">
            <div class="col s12">
                 <ul class="tabs">
                    <li class="tab col m6"><a class="active" href="#gercek">Gerçek Kişi</a></li>
                    <li class="tab col m6"><a class="active" href="#tuzel">Tüzel Kişi</a></li>
                </ul>
        </div>
        <div id="gercek" class="col s12">
            <div class="col s12 m12 l12">
                <div id="inline-form" class="scrollspy">
                    <div class="card-content">
                        <form method="POST">
                        {% csrf_token %}
                            <div class="row">
                                <div class="input-field col m4 s12">
                                    <i class="material-icons prefix">email_outline</i>
                                    {{form.client_email}}
                                    <label for="{{ form.client_email.id_for_label }}">Müvekkilin E-Posta Adresi</label>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>                
            </div>
        </div>
        <div id="tuzel" class="col s12">
            <div class="col s12 m12 l12">
                <div id="inline-form" class="scrollspy">
                    <div class="card-content">
                        <form method="POST">
                        {% csrf_token %}
                            <div class="row">
                                <div class="input-field col m4 s12">
                                    <i class="material-icons prefix">account_circle</i>
                                    {{form.client_title}}
                                    <label for="{{ form.client_title.id_for_label }}">Müvekkilin Unvanı</label>
                                </div>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>                
            </div>            
        </div>
    </div> 

{%csrf_令牌%} 电邮(大纲) {{form.client_email} Müvekkilin E-Posta Adresi {%csrf_令牌%} 会计圈 {{form.client_title} 穆维基林
在“不工作”模板中,用表单标记包装每个单独呈现的字段。这不是做你需要的事情的正确方法。只需像在工作模板中一样保留一个表单标记,并呈现其中的所有字段:

<div id="clientModal" class="modal bottom-sheet">
    <div class="modal-content">
        <form method="POST">
            {% csrf_token %}


            <!-- put your fields here with any additional markup you need -->

            {{ form.client_email }}
            <label for="{{ form.client_email.id_for_label }}">Müvekkilin E-Posta Adresi</label>

            {{ form.client_title }}
            <label for="{{ form.client_title.id_for_label }}">Müvekkilin Unvanı</label>

            <!-- by the way you can use form.<field>.label_tag -->
            {{ form.client_phone_number }}
            {{ form.client_phone_number.label_tag }}

            <!-- and maybe you'd also like to render errors -->
            {{ form.client_phone_number.errors }}

            <button class="btn">Ekle</button>
        </form>
    </div> 
</div>

谢谢你的数据技巧,这部分很有效。但是表单仍然不起作用。即使在工作模板中,如果我只是将{{form}标记更改为{{form.client_title},post数据也会被发送,但不会在db中注册。@AhmetNecipArslan显示您的实际代码,包括表单
code
{%csrf_token%}{form.client_title}Ekle
code
@AhmetNecipArslan您仍然没有呈现错误,您确定您的表单有效吗?
if form.is_valid():
    form.save(commit=True)