Django request.is _false를 반환합니다.
저는 장고 + jQuery로 아약스를 테스트하고 있습니다.제 생각에는 다음과 같습니다.
def ajax_test(request):
if request.is_ajax():
message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
그리고 내 템플릿에는 이것이 있습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.6.4.js"></script>
</head>
<body>
<script>
$.get("/ajax_test", function(data) {
alert(data);
});
});
</script>
</body>
</html>
제 질문은 - 왜 이것이 제 html 페이지에 "아약스 아님"을 반환합니까?
당신에게 무슨 일이 일어났는지 모르겠어요.테스트를 해보니 좋은 메시지가 왔습니다.This is ajax
내 코드:
urls.py
url(r'^$', 'myapp.views.home', name='home'),
url(r'^ajax_test/$', 'myapp.views.ajax_test', name='ajax_test'),
views.py
def home(request):
return render_to_response('home.html', {},
context_instance=RequestContext(request))
def ajax_test(request):
if request.is_ajax():
message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
템플릿/home.message
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function () {
$.get("/ajax_test/", function (data) {
alert(data);
});
});
</script>
</body>
</html>
처럼 보인다is_ajax
그냥 확인해 보세요.HTTP_X_REQUESTED_WITH
(같은)X-Requested-With
HTTP) 헤더입니다.같다면,XMLHttpRequest
아약스에 대한 질문이 있습니다.
이제 이 헤더의 운명을 추적하는 것은 매우 쉽습니다.
초기 HTTP 요청(브라우저의 디버그 플러그인, Wireshark, tcpdump 또는 원하는 다른 도구 사용)을 보고 올바른 HTTP 요청이 있는지 확인합니다.
HTTP_X_REQUESTED_WITH
표제의그렇지 않으면 jQuery(또는 스크립트)에 문제가 있습니다.Daniel Roseman이 말한 것처럼 헤더는 리디렉션 중에 손실될 수 있습니다(이것을 직접 본 적은 없지만 거의 확실하게 가능합니다).이 경우 두 개 이상의 연결된 HTTP 요청을 볼 수 있으며, 그 중 하나에는 다음과 같은 기능이 없습니다.
HTTP_X_REQUESTED_WITH
표제의이 경우 웹 서버의 구성 또는 리디렉션 자체에 문제가 있을 수 있습니다(코드에서 리디렉션 응답이 생성된 경우 이를 제거하거나 헤더를 수동으로 릴레이해야 할 수도 있습니다).또한 HTTP 프록시는 머리글을 자를 수 있습니다.이 경우, 당신은 트래픽 검사관을 통해 서버 측의 HTTP 요청을 볼 수 있습니다.
request.environ
(환경 변수와 상당히 혼동되었지만 HTTP 헤더도 있습니다.)
아마도 APPEND_SLASH가 설정되어 있고(기본값), Django가 리디렉션 중입니다./ajax_test
로./ajax_test/
관련 헤더를 보존하지 않습니다.우선 슬래시가 있는 버전을 요청하는 것이 좋습니다.
코드를 다음과 같이 조정했습니다.
views.py :
def index(request):
return render_to_response('index.html',
locals(), context_instance=RequestContext(request))
def ajax_test(request):
if request.is_ajax():
message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
urls.py :
urlpatterns = patterns('',
# root
url(r'^$', views.index, name='index'),
# ajax
url(r'^ajax_test/$', views.ajax_test, name='ajax_test'),
)
템플릿:
...
<script type="text/javascript">
$(document).ready( function() {
$.get("/ajax_test/", function(data) {
alert(data);
});
});
</script>
다른 버전의 jQuery를 사용해 보십시오...그 문제가 JS에 있었을 가능성이 있습니다...
예:
http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js
당신의.get
CSRF 토큰을 지정해야 합니다.이게 문제인지는 모르겠지만 도움이 될 겁니다.
.get(..., function(data) {
(...)
data: { csrfmiddlewaretoken: '{{ csrf_token }}',
(...)
})
언급URL : https://stackoverflow.com/questions/8587693/django-request-is-ajax-returning-false
'source' 카테고리의 다른 글
Facebook graphApioAuth - 액세스 토큰을 얻는 방법? (0) | 2023.08.14 |
---|---|
Galera 성단: 매일 밤 5시 30분에 신비로운 desync (0) | 2023.08.14 |
mysql 8.0은 이 SQL 스크립트를 실행할 수 있지만 mariaDB 5.5는 실행할 수 없고 오류: 1064(42000) (0) | 2023.08.14 |
SQL의 필드에 chr(30)이 있는 문자열을 삽입하는 방법 (0) | 2023.08.14 |
Twitter 부트스트랩 모달 전체 화면을 만드는 방법 (0) | 2023.08.14 |