我对Django很新,而且我正在努力做的事情,我似乎不明白怎么做。现在我有使用javascript onclick显示/隐藏页面的元素。我正在展示的内容包括一个下拉框。我想做的是调用我编写的python客户端函数,传递选择,从而对数据库进行更改。函数是写的,我有前端工作,但我不明白如何采取提交按钮,让javascript不仅显示/隐藏元素,但最终调用此函数。
我不希望页面刷新我的研究到目前为止让我相信我需要使用AJAX和某种POST。不太确定。我对这种事情没有经验。我想知道我是否在正确的轨道或某个地方可以帮助我到达那里/某种指南。
答案 0 :(得分:3)
你是对的,你需要使用AJAX。这是一个简单的例子:
template.html
<button type="button" id>Click Me!</button>
{% block inline_js %}
<script type="text/javascript">
$(document).ready(function () {
$(document).on("click",'#button',
function() {
$.ajax({
type: "POST",
data: { action: "delete"},
success: function(data){}
</script>
您可以直接在视图中放置AJAX功能。如果你没有在你的AJAX调用的'url'参数中放置任何内容,它将调用自己(你的视图调用它)。
views.py
def post(self,request, *args, **kwargs):
#Add a AJAX request check. If it is AJAX, redirect to AJAX function
if self.request.is_ajax():
return self.ajax(request)
#===========================================================================
# AJAX
#===========================================================================
def ajax(self, request):
response_dict= {
'success': True,
}
#Your SQL DROP code here...
return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json')
答案 1 :(得分:1)
您必须使用JavaScript发出POST请求,并在服务器上接收它。基本思路:您使用XMLHttpRequest或$.ajax从客户端发送数据(可能是JSON)(如果您的项目使用jQuery)。从理论上讲,我对Django也不熟悉。但根据文档,Django默认不能处理AJAX,所以它似乎是你需要的:http://www.dajaxproject.com/dajaxice/