Hi Voss,

i forgot about django's CSRF protection.
You can use the csrf_exempt decorator on the view function to disable 
django's CSRF protection - however, i wouldn't recommend that.

There is a script at https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
 
To use the script with dojo instead of jquery, you will need to adapt it a 
little:

-copy the getCookie function to your code

then, every time you make a POST request to your application using 
dojo.xhrPost, add this to the arguments object:

headers: {'X-CSRFToken': getCookie('csrftoken')}

If you are still getting HTTP 400 errors, verify that the request looks 
sane in firebug and check that it contains a X_HTTP_REQUESTED_WITH header 
set to XMLHttpRequest (but i am pretty sure dojo adds this one 
automatically).

hendrik

Am Montag, 4. Juni 2012 18:33:21 UTC+2 schrieb voss:
>
> Hi Hendrik,
>
> I forgot to mention in my previous message that the debug shows the 
> following: 
>
> code 400, message Bad request syntax 
> ("\x16\x03\x01\x00\x8b\x01\x00\x00\x87\x03\x01O\xcc\xd8\xc0\x18hZ\x7f\xa3h\xb9l\xaf\xdb\xfbp}(\xc1\xc6\xa5g\x18\xe5!\x87\xd4\xe2`_'\x90\x00\x00H\x00\xff\xc0")
>
> Thank you!
>
>     voss
>
>
>
> On Saturday, June 2, 2012 8:46:38 AM UTC-5, henzk wrote:
>>
>> Hi, 
>>
>> i haven't tested the code and never used dojo before, but sth. like 
>> this should work: 
>>
>> var source1 = new dojo.dnd.Source("itemListNode"); 
>> var source2 = new dojo.dnd.Target("selectedListNode"); 
>> dojo.connect( source1, "onDndDrop", 
>>     function(source, nodes, copy, target){ 
>>         //gather items and details 
>>         var details = []; 
>>         for( i=0; i < nodes.length; i++){ 
>>             var item = this.getItem(nodes[i].id); 
>>             details.push(item.data); 
>>         } 
>>         //send details to server via AJAX POST request 
>>         dojo.xhrPost({ 
>>             url: "/save_details/", 
>>             content: {details: JSON.stringify(details)}, 
>>             // The success handler 
>>             load: function(response) { 
>>                  alert('ok'); 
>>             }, 
>>             // The error handler 
>>             error: function() { 
>>                  alert("error"); 
>>             } 
>>         }); 
>> }); 
>>
>> Explanation: 
>>
>> - changed 'item' to 'var item' ... without the 'var' item will be 
>> global, which is probably not what you want. 
>> - to get around making multiple requests to the server(one for each 
>> dropped node), put the detail of each node in the details array. 
>> - then json-encode and send this array to your django view (assumed to 
>> be at '/save_details/') 
>> - in the view, access the list as 
>> json.loads(request.POST.get('details', '[]')) and place it into 
>> request.session 
>>
>> As mentioned, the code is completely untested. 
>>
>> Good luck! 
>>
>> Yours, 
>>
>> Hendrik Speidel 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/o9ogPPvIya0J.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to