javascript - Django class-based views with ajax? -


i'm trying make dialog when user clicks button, keep getting error. code have.

for note, i'm using django-braces catch ajax calls.

view:

class userregistration(braces.ajaxresponsemixin, createview):     form_class = userregistrationform     template_name = "registration_form.html"      def get_ajax(self, request, *args, **kwargs):         context = self.get_context_data(**kwargs)         rendered = render_to_string(self.template_name, context_instance=context)         return httpresponse(rendered) 

javascript:

$("#signup").on("click", function(){     $("body").append("<div id='dialog' title='register'></div>");     $( "#dialog" ).dialog({         height: 'auto',         width: 'auto',         modal: true,         autoopen: false     });      $.ajax({         url: '/signup/',         data: {},         type: 'get',         success: function(data){             $("#dialog").html(data);             $("#dialog").dialog("open");         },         error: function(error) {             alert("failure");         }     }); }); 

i know it's render_to_string because if set rendered equal "this text" it'll work, i'm not sure i'm doing wrong.

the context_instance parameter in render_to_string expects context instance, while get_context_data returns dictionary. there several ways can solve this:

1) provide context instance, preferably requestcontext. requestcontext execute context processors, default variables request , user available template:

from django.template import requestcontext  def get_ajax(self, *args, **kwargs):     context = self.get_context_data(**kwargs)     rendered = render_to_string(self.template_name,                                  context_instance=requestcontext(self.request, context))     return httpresponse(rendered) 

2) pass context dictionary, using dictionary parameter:

def get_ajax(self, *args, **kwargs):     context = self.get_context_data(**kwargs)     rendered = render_to_string(self.template_name, dictionary=context)     return httpresponse(rendered) 

3) you're passing rendered string httpresponse object, can skip render_to_string, , use render instead:

from django.shortcuts import render  def get_ajax(self, *args, **kwargs):     context = self.get_context_data(**kwargs)     return render(self.request, self.template_name, context) 

Comments

Popular posts from this blog

PHPMotion implementation - URL based videos (Hosted on separate location) -

javascript - Using Windows Media Player as video fallback for video tag -

c# - Unity IoC Lifetime per HttpRequest for UserStore -