如何禁止按钮在 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')
我的 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')