【问题标题】:How do I disallow a button from submitting my form in Django?如何禁止按钮在 Django 中提交表单?
【发布时间】:2021-06-16 15:01:46
【问题描述】:

我的 django 站点表单中有两个按钮,第一个应该只调用 javscript 函数,第二个应该提交表单。

<form method="POST" enctype="multipart/form-data">
     {% csrf_token %}
     {{ form.title|as_crispy_field }}
     <br/>
     {{ form.body|as_crispy_field }}
     <button class="btn mt-3" onclick="insertText('HELLO')">Insert Text</button>
     <br/>
     <button class="btn btn-success mt-3" >Submit!</button>
 </form>

我的“views.py”文件包含此页面的以下代码:

class Posts(View):
    def get(self, request, *args, **kwargs):
        form = PostForm()
        posts = Post.objects.all().order_by('-publish_date')
        context = {
            'form': form,
            'posts': posts
        }

        return render(request, 'posts/view_posts.html', context)

    def post(self, request, *args, **kwargs):
        form = PostForm(request.POST, request.FILES)

        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.publisher = request.user
            new_post.save()
            form = PostForm() 

        return redirect('view-posts')

我的问题是应该只调用 javascript 函数的第一个按钮也在发出 POST 请求并提交表单。

这个问题有什么解决办法吗?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    您可以将按钮命名为

    <form method="POST" enctype="multipart/form-data">
         {% csrf_token %}
         {{ form.title|as_crispy_field }}
         <br/>
         {{ form.body|as_crispy_field }}
         <button class="btn mt-3" onclick="insertText('HELLO')" name="not_save_button">Insert Text</button>
         <br/>
         <button class="btn btn-success mt-3" name="save_button">Submit!</button>
     </form>
    
    

    在你的观点的 post 方法中:

    def post(self, request, *args, **kwargs):
            form = PostForm(request.POST, request.FILES)
    
            if form.is_valid() and 'save_button' in request.POST:
                new_post = form.save(commit=False)
                new_post.publisher = request.user
                new_post.save()
                form = PostForm() 
    
            return redirect('view-posts')
    

    【讨论】:

    • 我仍然有一点问题,每当我按下“not_save_button”时,网站都会刷新并清除表单,因为发布请求再次将我重定向回网站。
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2022-01-22
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2011-04-04
    相关资源
    最近更新 更多