jquery - Post returns 302 for ajax enabled class based view -


i have been trying basic implementation of login , logout forms through ajax in django. trying eclose standard auth login , logout ajax enabled class based view. working somereason post returning 302.

views.py

class jsonajaxview(view):     template_name = none     context = {}     form = none     context_object_name = 'context'     #this tells whether yout need     #return same view after post completion     return_back = none       redir_to = none     page_load = false     @method_decorator(login_required)     @method_decorator(user_passes_test(privilaged_user))     @method_decorator(csrf_protect)     def post(self, request):         print("emp_users: ajax post")         print("page_load = ", self.page_load)         frm = self.form(request.post)         if frm.is_valid():             frm.submit_action(request)             if self.redir_to not none:                 if self.page_load true:                     return httpresponseredirect(self.redir_to)                 else :                     response_data = {}                     response_data['redirect'] = self.redir_to                     json_data = json.dumps(response_data)                     return httpresponse(json_data, content_type="application/json")         print("emp_users post: form invalid")         get(request)     def get(self, request):         print("emp_users: ajax get")         #look view block in views , process         # return json         if self.form not none:             print("emp ajax get: initializing form")             frm = self.form()             print("emp ajax get: updating context")             self.context.update(frm.get_context(request))             self.context.update({'form':frm})             self.context.update(csrf(request))         if request.is_ajax():             response_data  = {}             page = render(request, self.template_name, self.context)             print("emp ajax get: page = ", page.content)             response_data['page'] = page.content.decode("utf-8")             print("emp ajax get: serializing")             json_data = json.dumps(response_data)             return httpresponse(json_data, content_type="application/json") 

forms.py

class login_form(authenticationform):     def get_context(self, request):         request.session.set_test_cookie()         current_site = get_current_site(request)         redirect_field_name = request.get_host()         ctxt = {}         ctxt.update({                 'dummy' : 'dummy',                 'redirect_field_name' : redirect_field_name,                 })         return ctxt      def submit_action(self, *args):         redirect_to = request.request.get(redirect_field_name, '')         if not is_safe_url(url=redirect_to, host=request.get_host()):             redirect_to = resolve_url(settings.login_redirect_url)              # okay, security check complete. log user in.             auth_login(request, form.get_user())              if request.session.test_cookie_worked():                 request.session.delete_test_cookie()              return httpresponseredirect(redirect_to) 

login.html

<script type="text/javascript" src="{{ static_url }}jquery/hr_base_nav_bar_main.js"></script> {% if form.errors %} <p>your username , password didn't match. please try again. </p> {% endif %}  <form method="post" action="/emp_users/login"> {% csrf_token %}  <table> <tr>     <th>{{ form.username.label_tag }}</th>     <td>{{ form.username }}</td> </tr> <tr>     <th>{{ form.password.label_tag }}</th>     <td>{{ form.password }}</td> </tr> </table>  <input type="submit" value="login" /> <input type="hidden" name="redirect_field_name" value="{{ redirect_field_name }}" /> </form> 

this url of view:

url(r'^logout/$', jsonajaxview.as_view(template_name='emp_users/logout.html', form=logout_form, redir_to='index', page_load=true)),

you can ignore redir_to , page_load attributes. main thing 302 post. doesn't seem enter view @ all.

here console log of django webserver:

[12/apr/2014 16:13:10] "get /emp_users/login http/1.1" 200 754 [12/apr/2014 16:13:10] "get /static/jquery/hr_base_nav_bar_main.js?_=1397299121194 http/1.1" 200 1541 [12/apr/2014 16:13:10] "get /static/jquery/hr_base_nav_bar_main.js?_=1397299121195 http/1.1" 200 1541 [12/apr/2014 16:13:10] "get /static/jquery/hr_base_nav_bar_main.js?_=1397299121196 http/1.1" 200 1541 [12/apr/2014 16:13:10] "get /static/jquery/hr_base_nav_bar_main.js?_=1397299121197 http/1.1" 200 1541 [12/apr/2014 16:13:55] "post /emp_users/login http/1.1" 302 0 emp_users: ajax emp ajax get: initializing form emp ajax get: updating context emp ajax get: page =  b'<script type="text/javascript" src="http://127.0.0.1:8000/static/jquery/hr_base_nav_bar_main.js" ></script>\n\n\n<form method="post" action="/emp_users/login">\n<input type=\'hidden\' name=\'csrfmiddlewaretoken\' valu e=\'ltxsyladmdtvwwwuo1ssg13reasb9itv\' />\n\n<table>\n<tr>\n\t<th><label for="id_username">username</label></th>\n\t<td> <input id="id_username" maxlength="254" name="username" type="text" /></td>\n</tr>\n<tr>\n\t<th><label for="id_password" >password</label></th>\n\t<td><input id="id_password" maxlength="4096" name="password" type="password" /></td>\n</tr>\n< /table>\n\n<input type="submit" value="login" />\n<input type="hidden" name="redirect_field_name" value="127.0.0.1:8000"  />\n</form>\n' emp ajax get: serializing [12/apr/2014 16:13:55] "get /emp_users/login?next=/emp_users/login http/1.1" 200 754 

why getting 302 post ? how solve this?

because you've decorated post method user_passes_test decorator. means need logged in post.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -