django - 如何禁止按钮在 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>
并在您的观点的发布方法中:
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')
推荐阅读
- jquery - 我的 GET 请求正好执行了两次
- node.js - 天蓝色部署:站点/wwwroot 中没有 package.json 文件
- flutter - 提交后禁用表单清除 TextFormField
- firebase - Flutter cloud_functions无效参数:'GeoPoint'的实例
- python - 如何使用 OpenCV VideoWriter 根据触发器开始和停止保存视频帧
- reactjs - 包括来自 piral 实例的类型失败
- linux - 有没有办法在linux中创建一个“.exe”?
- google-chrome - Google Docs API 在不知道 id 的情况下查看 Docs
- python - 如何使用 tkinter 在条目列表上实现滚动条?
- r - glmer中多项混合效应模型的估计