单击表单复选框并传递复选框布尔值时如何在Django中刷新view.py?
Posted
技术标签:
【中文标题】单击表单复选框并传递复选框布尔值时如何在Django中刷新view.py?【英文标题】:How to refresh view.py in Django when clicking form checkbox and passing checkbox boolean? 【发布时间】:2021-10-03 18:46:34 【问题描述】:您好,我正在尝试在单击表单复选框并将复选框布尔值传递给 view.py 时刷新我的网页。
我正在尝试使用 Ajax 来完成此任务,但这是第一次使用 Ajax,我真的不知道它是否正常工作。
html 和 AJAX:
<script type="text/javascript">
$("#check_legend").change(function()
var form_data = $("#form_legend").serialize();
$.ajax( url: '/api/post_form/',
type: "POST",
dataType: "json",
data: form_data: form_data,
//cache: false
).done(function(data)
if (data.result === true)
alert(data.message);
);
);
</script>
<div class="row">
<div class="col-sm-10">
map|safe
</div>
<div class="col-sm-2">
<form method="post" id="form_legend">
<h3><span style="color: #e8c4b4;">Places</span></h3>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check_legend" name="cities">
<label class="form-check-label" for="check_legend">Cities</label>
</div>
</form>
</div>
</div>
如果有用的话,这在我的 url.py 中:
path('api/post_form/', post_form_api, name="post_form_api")
对于 ajax 响应,我的 view.py 如下所示:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def post_form_api(request):
data =
if request.method == "POST" and request.POST.get('cities', None) is not None:
form_field1 = request.POST.get('cities')
# save the form data and indicate success
data['result'] = True
data['message'] = "Form saved successfully"
...
if request.is_ajax():
return JsonResponse(data)
else:
return HttpResponseBadRequest()
在 view.py 的不同部分中,我为网页赋值,我处理 POST 请求,如下所示:
if request.method == 'POST':
if request.POST.get['cities', False]:
【问题讨论】:
有错误吗?尝试打印request.POST.get('form_data')
告诉我你看到了什么...
@MoiMyazz 如果我在 ``` 之后这样做 if request.method == 'POST': ``` 当我选中和取消选中复选框时,我什么也得不到。似乎没有触发任何东西。第一次打开网页时,我什至没有在控制台日志中看到任何内容。
不,兄弟,试试if request.method == 'POST':
上方的打印语句request.POST.get('form_data')
你应该会看到类似QueryDic
的对象。
遗憾的是,如果我在 if 语句上方尝试它,则不会出现类似的情况,这可能是因为我的表单数据未保存在模型中吗?我试图在没有模型的情况下完成这项工作。
不,兄弟,这里的模型形式不是问题......这似乎是来自前端。更新您的 Ajax 调用...url: '/api/post_form/',
//cache: false
、data: form_data: form_data
。试试这些,告诉我你得到了什么
【参考方案1】:
你可以使用
window.location.reload()
【讨论】:
以上是关于单击表单复选框并传递复选框布尔值时如何在Django中刷新view.py?的主要内容,如果未能解决你的问题,请参考以下文章