【问题标题】:django python form to submit, delete row from database and refresh pagedjango python表单提交,从数据库中删除行并刷新页面
【发布时间】:2019-03-18 00:04:34
【问题描述】:

我是 Django 的新手,如果有人能帮助我解决这个问题,我将不胜感激。

我在后端有一个包含 100 行用户信息的数据库。 姓名、姓氏、电话号码。

该数据库在主页模板上可见,如果您选择其中一个名称,您可以向此人捐赠一些东西。

当您点击提交按钮时,您将进入新的 ajax 窗口,您可以在其中输入数据然后提交。

然后我通过电子邮件收到了您的消息。

我的问题是如何同时确认(提交)和从数据库中删除行(从数据库中的人)然后刷新页面? 意思是,当您提交表单时,函数应该立即从主页中删除人员,并且必须刷新页面才能看到另一个人?

这里是代码。 我将不胜感激任何帮助。 谢谢大家。

views.py

def about(request):
    context = {
        'num_toys': '1',
    }
    return render(request, 'about.html')  # , context=context


def couses(request):
    db_queryset = Children.objects.all()
    context = {'child': db_queryset}

    return render(request, 'couses.html', context=context)


class ChildrenListView(ListView):
    model = Children
    context_object_name = 'child'


class ChildrenCreateView(CreateView):
    model = Children
    form_class = ChildrenForm
    success_url = reverse_lazy('children_changelist')


class ChildrenUpdateView(UpdateView):
    model = Children
    form_class = ChildrenForm
    success_url = reverse_lazy('children_changelist')


class ChildrenDetailView(DetailView):
    model = Children
    form_class = ChildrenForm
    success_url = reverse_lazy('children_detail')

children_detail.html

      



      
           <!-- Start contact form area -->
	    <div class="couses">		
        <section class="contact-form-area pb-60 pt-90">
			<div class="couses">
            <div class="container">
                <div class="row">
                    <!-- Start section title -->
                    <div class="col-sm-12">
                        <div class="section-title text-center">
							<h2>Donate <span> {{ children.toy }} </span> to <span>{{ children.name }}</span> who is <span>{{children.date }} old</span></h2>
                            <img src="static/children/img/title-bottom.png" alt="">
                        </div>
                    </div>
                    <!-- End section title -->
                    <div class="col-sm-12">
                        <div class="contact-form">
                            <form id="contact-form" method="POST" action="mail.php">
                                <div class="form-fields">
                                    <label for="name">Name</label>
                                    <input id="name" name="name" type="text" placeholder="Your Name" required>
                                </div>
                                <div class="form-fields">
                                    <label for="email">Email</label>
                                    <input id="email" name="email" type="text" placeholder="Your Email" required>
                                </div>
                                <div class="form-fields last">
                                    <label for="phone">Phone</label>
                                    <input id="phone" name="phone" type="text" placeholder="Your Phone" required>
                                </div>
                                <div class="message-fields">
                                    <label for="mess">Message</label>
                                    <textarea name="mess" id="mess" cols="30" rows="10" placeholder="Message"></textarea>
                                </div>
                                <div class="form-button">
                                    <button type="submit">Send your message</button>
                                    <button type="reset">Reset</button>
                                </div>
                            </form>
                            
                            <p class="form-messege"></p>

                        </div>
                    </div>
                </div>
            </div>
			</div>
        </section>

【问题讨论】:

    标签: django python-3.x django-forms django-templates django-views


    【解决方案1】:

    点击提交点击 url 并首先在电子邮件部分处理您的消息,然后您可以通过在您的表中编写查询来过滤掉具有该表的任何主键的特定人的对象,从而从数据库中删除该人看法。然后将该表的剩余数据呈现到您从提交点击重定向到的模板。

    从上面的对话中,我了解到您不想从数据库布尔字段中删除该人将是一个不错的选择,而不是您想通过这种方式保存从电子邮件发送的消息,您可以同时执行这两项操作.您已将消息保存在数据库中,并且可以从空消息数据中将这些用户呈现在模板上。

    【讨论】:

    • 非常感谢您的回答。您对代码有任何线索,只是任何示例吗?我正在尝试寻找一些东西,但我认为我会绕圈子
    • 对于电子邮件和基于课程的视图,您可以从这些教程simpleisbetterthancomplex.com/series/beginners-guide/1.11 中获得帮助。这肯定会为您解决问题。
    【解决方案2】:

    如果我错了,我很抱歉,但我知道您想要执行两个操作。

    在您的代码中,我可以看到您有表单和基于类的视图。也许你需要重写函数form_valid来做你提交时需要的操作。

    查看此网站http://ccbv.co.uk,您将在那里找到视图的详细信息。

    【讨论】:

    • 感谢您的回答。我会检查链接。是的,我必须添加一些代码,但我不确定哪一个只是删除和刷新页面,因为我不想重复数据库中的人。所以,一旦提交,就需要从模板和数据库中删除。
    • 也许如果您在数据库中的人员模型中创建一个默认值为 False 的新布尔字段,并且当您提交时,将该字段的值更改为 True,然后当您刷新查询集中的页面时您的 ListView 仅获取在新字段中具有错误值的人员
    • 嗯.. 很有趣......我会试试的。如果从数据库中删除不成功,那么我必须找到一种至少从主页隐藏的方法
    • 如果您删除模型 Children 的对象,那么当您重定向到子列表视图时,它不应该出现
    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多