问题描述
我正在使用Ajax(以及Django)在按钮点击上执行一些操作。 我成功调用了javascript函数,但我无法调用Django视图。 没有错误,但我视图中的print语句不打印...?
urls.py
urlpatterns = patterns('polls.views',
url(r'^request_access/$', 'request_access',
name='request_access'),
)
views.py
def request_access(request):
print("DJANGO VIEW")
if request.method == "POST":
print("DATA: ", request.POST.get('request_data'))
return HttpResponse(
json.dumps(response_data),
content_type="application/json"
)
template.html
<button class="btn btn-green btn-sm" onclick="request_access(this)" id="{{ data }}"><i class="fa fa-plus"></i> Join Group</button>
javascript.js
function request_access($this){
console.log("button clicked");
var request_data = $this.id;
console.log("data: " + request_data);
$.post({
url: "request_access/",
data : { request_data: request_data},
success : function(json) {
$("#request-access").hide();
console.log("requested access complete");
}
})
}
1楼
chandu
2
2015-08-07 13:59:02
在代码中将“post”替换为“ajax”,现在print语句将在您的视图中工作。
function request_access($this){
console.log("button clicked");
var request_data = $this.id;
console.log("data: " + request_data);
$.ajax({
url: "request_access/",
data : { request_data: request_data},
success : function(json) {
$("#request-access").hide();
console.log("requested access complete");
}
})
}
2楼
chandu
0
2015-08-07 14:34:02
这将返回null值。
views.py
def request_access(request):
print("DJANGO VIEW")
a = request.POST.get('request_data')
print a
return HttpResponse(json.dumps(a),content_type="application/json")
JS
function request_access($this){
console.log("button clicked");
var request_data = $this.id;
alert(request_data);
console.log("data: " + request_data);
$.ajax({
type: 'GET',
url: "/crm/request_access/",
data : { 'request_data': request_data},
success : function(json) {
$("#request-access").hide();
console.log("requested access complete");
}
})
}
3楼
Sebastien Kerbrat
0
2016-08-04 10:01:45
我遇到了同样的问题,即我的视图没有错误但我的视图没有被调用。 这是我解决它的方式:
我试图得到以下网址:
url(r'users / change_rights','change_user_right',name ='change_user_right'),
但是users / change_rights url也匹配了我注册的另一个url:
url(r'users','users_table',name ='users_table'),
所以django只是调用第一个非ajax视图而不返回任何错误。
要解决此问题,请在第二个网址的末尾添加“$”,这样它就不会包含users / change_rights:
url(r'users $','users_table',name ='users_table'),