2013-02-06 2 views
0

뷰에 대한 ajax 요청을하면 jquery 호출에 템플릿 데이터가 반환됩니다.django ajax가 데이터로 템플릿을 반환합니다.

예를 들어,이 방법으로 아약스 호출을 만들고 있습니다.

<script> 
    function getProfile(username) { 
    $.getJSON("/profiles/"+username, { username:{{ username }}}, function(json){ 
          alert("Was successful?: " + json['success']); 
         }); 
        } 
    function addClickHandlers() { 
      $(".person-name").click(function() 
       getProfile(result.user.username) }); 
        } 
        $(document).ready(addClickHandlers); 
    </script> 

내 장고보기

def profiles_view(request, username): 
# if username: 
#  selected_user = User.objects.get(username = username) 
    results = {'success':False} 
    if request.method == u'GET': 
     GET = request.GET 
     if GET.has_key(u'username'): 
      results = {'success':True} 
    json = simplejson.dumps(results) 

    return HttpResponse(json, mimetype='application/json') 

내가는 HttpResponse에 내 템플릿보기 profiles_view.html을 통과 할 수 있습니까? 내 서식 파일의 출처가 확실하지 않습니까?

+1

유용 할 경우이 질문을 볼 수 있습니다 [link] (http://stackoverflow.com/questions/11104690/django-how-to-return-model-formset-in-ajax-and) -use-in-template) – akotian

답변

0

HTML보기와 JSON보기가 모두 필요한 경우 두 가지 응답이 필요할 수 있습니다. 첫 번째는 TemplateResponse이고, 두 번째 것은 HttpResponse입니다. 두 가지 요청은 비효율적 인 것처럼 보이지만 첫 번째 요청은 한 번만 수행되며 이후에는 AJAX 요청을 사용하여 JSON 응답 만 필요합니다.

다음과 같은 방법으로 템플릿을 반환 할 수 있습니다 당신은 그냥 아약스를 통해 데이터를 전달하려는 경우

return TemplateResponse(request, "profiles_view.html", results) 
+0

나는 단지 TemplateResponse가 필요하다. 내가 아약스 요청을하는 유일한 이유는 특정 div에 html을 표시하는 것이다. TemplateResponse의 모든 예제? – Warz

+0

답변에 스 니펫을 추가했습니다. 하나의 Ajax 요청 만 필요하면 하나의 템플릿보기에서 두 개의 요청을 병합하는 것을 고려할 수 있습니다. 그렇지 않으면 두 개의 요청을 분리하는 것이 좋습니다. –

0

당신은 템플릿을 필요가 없습니다.

+0

특정 div에 템플릿을로드하고 동일한 페이지에서 ajax 요청을 만들고 있습니다. – Warz

관련 문제