如何禁止按钮在 Django 中提交我的表单?

How do I disallow a button from submitting my form in Django?

我的 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 请求并提交表单。

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

您可以将按钮命名为

<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')