Just include a 'csrftoken' form parameter with your other form data. If you're submitting the entire form, you can use the {% csrf_token %} template tag anywhere inside your <form></form> tags.
_Nik On 10/26/2012 2:14 AM, Stone wrote: > This is misunderstand able for me. > How can I submit as a parameter? > > Dne čtvrtek, 25. října 2012 17:24:05 UTC+2 Nikolas Stevenson-Molnar > napsal(a): > > It looks like you're submitting your request via AJAX and using the > X-CSRFToken header. It's very possible that one of your proxies isn't > forwarding that header correctly. You might try submitting it as an > actual form parameter instead. > > _Nik > > On 10/25/2012 6:01 AM, Stone wrote: > > Over Firefox and Firebug I have received that CSRF Validation > failed. > > My server is running on apache2-2.2.22 and there are two proxy's > > All template file and forms includes csrf_token tag. > > > > On Oct 24, 6:54 pm, Nikolas Stevenson-Molnar > <nik.mol...@consbio.org> > > wrote: > >> It's possible that the CSRF token isn't being sent correctly. > As a test, > >> try adding the @csrf_exempt decorator to your view. If you no > longer get > >> the 403, then it's a CSRF problem. > >> > >> _Nik > >> > >> On 10/24/2012 6:31 AM, Stone wrote: > >> > >> > >> > >> > >> > >> > >> > >>> My Django application is running on real server (apache2-2.2.22). > >>> In urls.py is mentioned: > >>> (r'^configSave/$', configSave), > >>> My HTML is bellow. After pressing on configSave I am receiving > HTTP > >>> 403 error page. > >>> In view.py is mentioned: > >>> def configSave(request): > >>> configFile={} > >>> if os.path.isfile(SSO_CONF) != False: > >>> f = open(SSO_CONF,"r") > >>> for line in f: > >>> line = line.strip() > >>> if re.search('^#',line) != None: > >>> '''print 'This is the commentary''' > >>> else: > >>> '''print line''' > >>> try: > >>> name, value = > line.split('=',2) > >>> configFile[name]=value > >>> print '<%s>%s</%s>' % > (name, value, name) > >>> except ValueError, err: > >>> ''' print 'This is empty > row''' > >>> > configFile['SlaveDeactAppl']=configFile['SlaveDeactAppl'].split(','); > > >>> > > configFile['SlaveDeactScripts']=configFile['SlaveDeactScripts'].split(','); > > >>> configFile={} > >>> if os.path.isfile(SSO_CONF) != False: > >>> f = open(SSO_CONF,"r") > >>> for line in f: > >>> line = line.strip() > >>> if re.search('^#',line) != None: > >>> '''print 'This is the commentary''' > >>> else: > >>> '''print line''' > >>> try: > >>> name, value = > line.split('=',2) > >>> configFile[name]=value > >>> print '<%s>%s</%s>' % > (name, value, name) > >>> except ValueError, err: > >>> ''' print 'This is empty > row''' > >>> > configFile['SlaveDeactAppl']=configFile['SlaveDeactAppl'].split(','); > > >>> > > configFile['SlaveDeactScripts']=configFile['SlaveDeactScripts'].split(','); > > >>> c = {} > >>> c = Context({ > >>> 'config':configFile, > >>> 'item':2, > >>> }) > >>> c.update(csrf(request)) > >>> return > >>> > > render_to_response('config.html',c,context_instance=RequestContext(request)) > > >>> By the way how to really fast define logging mechanism which > can be > >>> use for debugging. > >>> Is this my programmer approach corrector is there any other > way how to > >>> react on the pressing of button? > >>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > "http:// > >>> www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd > <http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>"> > >>> {% extends "index.html" %} > >>> {% block content %} > >>> <html lang="en-US" xml:lang="en-US" > xmlns="http://www.w3.org/1999/ > >>> xhtml"> > >>> <script type="text/javascript"> > >>> top.helpID="SSO_config"; > >>> $(document).ready(function () { > >>> function sendAjax() > >>> { > >>> $(document).ajaxSend(function(event, xhr, settings) { > >>> function getCookie(name) { > >>> var cookieValue = null; > >>> if (document.cookie && document.cookie != '') { > >>> var cookies = document.cookie.split(';'); > >>> for (var i = 0; i < cookies.length; i++) { > >>> var cookie = jQuery.trim(cookies[i]); > >>> if (cookie.substring(0, name.length + > 1) == (name > >>> + '=')) { > >>> cookieValue = > >>> decodeURIComponent(cookie.substring(name.length + 1)); > >>> break; > >>> } > >>> } > >>> } > >>> return cookieValue; > >>> } > >>> function sameOrigin(url) { > >>> var host = document.location.host; // host + port > >>> var protocol = document.location.protocol; > >>> var sr_origin = '//' + host; > >>> var origin = protocol + sr_origin; > >>> // Allow absolute or scheme relative URLs to > same origin > >>> return (url == origin || url.slice(0, > origin.length + 1) > >>> == origin + '/') || > >>> (url == sr_origin || url.slice(0, > sr_origin.length + > >>> 1) == sr_origin + '/') || > >>> !(/^(\/\/|http:|https:).*/.test(url)); > >>> } > >>> function safeMethod(method) { > >>> return > (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); > >>> } > >>> if (!safeMethod(settings.type) && > sameOrigin(settings.url)) { > >>> xhr.setRequestHeader("X-CSRFToken", > >>> getCookie('csrftoken')); > >>> } > >>> }); > >>> } > >>> $("#saveCfg").click(function(event){ > >>> sendAjax(); > >>> $.ajax({ > >>> type: "POST", > >>> url: "/SSO/configSave/", > >>> dataType: "text", > >>> success: function(data) { > >>> alert(data); > >>> }, > >>> error: function(xhr,ajaxOptions,thrownError) { > >>> alert(xhr.status +" "+xhr.statusText); > >>> alert(thrownError); > >>> } > >>> }); > >>> }); > >>> }); > >>> </script> > >>> <body class="bodyClass"> > >>> <table class="body_table"> > >>> <tr> > >>> <th colspan="4" class="thead"><b> IP > configuration</b></ > >>> th> > >>> </tr> > >>> <tr> > >>> <td>Master IP address</td> > >>> <td> > >>> <input id="mip" style="width: 100px;" > >>> value="{{config.MasterIPAddress}}"/> > >>> </td> > >>> <td>Slave IP address</td> > >>> <td> > >>> <input id="sip" style="width: 100px;" > >>> value="{{config.SlaveIPAddress}}"/> > >>> </td> > >>> </tr> > >>> <tr> > >>> <td>Master netmask</td> > >>> <td> > >>> <input id="mnetmask" style="width: 100px;" > >>> value="{{config.MasterIPNetmask}}"/> > >>> </td> > >>> <td>Slave netmask</td> > >>> <td> > >>> <input id="snetmask" style="width: 100px;" > >>> value="{{config.SlaveIPNetmask}}"/> > >>> </td> > >>> </tr> > >>> <tr> > >>> <td>Master broadcast</td> > >>> <td> > >>> <input id="mbroadcast" style="width: 100px;" > >>> value="{{config.MasterIPBroadcast}}"/> > >>> </td> > >>> <td>Slave broadcast</td> > >>> <td> > >>> <input id="sbroadcast" style="width: 100px;" > >>> value="{{config.SlaveIPBroadcast}}"/> > >>> </td> > >>> </tr> > >>> <tr> > >>> <td></td> > >>> <td></td> > >>> <td></td> > >>> <td></td> > >>> </tr> > >>> <tr> > >>> <td>Lancard name</td> > >>> <td><span > id="cardname"></span>{{config.LanCardName}}</td> > >>> <td>MAC address</td> > >>> <td><input id="cardmac" > value="{{config.LanCardMAC}}"/></td> > >>> </tr> > >>> <tr> > >>> <th colspan="4" class="thead"><b> Configuration > >>> parameters</b> > >>> </th> > >>> </tr> > >>> <tr> > >>> <td>Replication frequency</td> > >>> <td> > >>> <select id="freq"> > >>> <option {% if > config.MasterBackupFrequency = "daily" %} > >>> selected="selected"{% endif %}>daily</option> > >>> <option {% if > config.MasterBackupFrequency = "Monday" %} > >>> selected="selected"{% endif %}>Monday</option> > >>> <option {% if > config.MasterBackupFrequency = "Thusday" %} > >>> selected="selected"{% endif %}>Thusday</option> > >>> <option {% if > config.MasterBackupFrequency = "Wednesday" %} > >>> selected="selected"{% endif %}>Wednesday</option> > >>> <option {% if > config.MasterBackupFrequency = "Thursday" %} > >>> selected="selected"{% endif %}>Thursday</option> > >>> <option {% if > config.MasterBackupFrequency = "Friday" %} > >>> selected="selected"{% endif %}>Friday</option> > >>> <option {% if > config.MasterBackupFrequency = "Saturday" %} > >>> selected="selected"{% endif %}>Saturday</option> > >>> <option {% if > config.MasterBackupFrequency = "Sunday" %} > >>> selected="selected"{% endif %}>Sunday</option> > >>> </select> > >>> </td> > >>> <td>Replication time</td> > >>> <td><input style="width: 40%;" id="backuptime" > >>> value="{{config.MasterBackupStartTime}}"/></td> > >>> </tr> > >>> <tr> > >>> <td valign="top">Slave deactivated application</td> > >>> <td style="width: 20%;"><span id="appl"> > >>> {% for appl in config.SlaveDeactAppl %} > >>> {{ appl }}<br> > >>> {% endfor %} > >>> </span></td> > >>> <td valign="top">Slave deactivated scripts</td> > >>> <td style="width: 20%;"><span id="scripts"> > >>> {% for appl in config.SlaveDeactScripts %} > >>> {{ appl }}<br> > >>> {% endfor %} > >>> </span></td> > >>> </tr> > >>> <!-- <div id="buttonPanel" style="display: block;"> > >>> <button id="saveTime" class="submitButton > ui-state-default ui- > >>> corner-all ui-priority-primary">Save replication > parameters</button> > >>> </div> --> > >>> <tr> > >>> <th colspan="4" class="thead"><b> Replication > parameters</ > >>> b> > >>> </th> > >>> </tr> > >>> <tr> > >>> <td>Replication enable</td> > >>> <td><input type="checkbox" id="replEnable" {% if > >>> config.ReplicationEnable = "yes" %}checked="checked"{% endif > %}/></td> > >>> <td>Account used for replication</td> > >>> <td> > >>> <select id="account"> > >>> <option {% if > config.ReplicationAccount = "engr" %} > >>> selected="selected"{% endif %}>engr</option> > >>> <option {% if > config.ReplicationAccount = "root" %} > >>> selected="selected"{% endif %}>root</option> > >>> </select> > >>> </td> > >>> </tr> > >>> <tr> > >>> <td>ReplicationRetryInterval</td> > >>> <td><span > id="interval">{{config.ReplicationRetryInterval}}</span></ > >>> td> > >>> <td>ReplicationRetryCount</td> > >>> <td><span > id="count">{{config.ReplicationRetryCount}}</span></td> > >>> </tr> > >>> <tr valign="center" align="center" colspan="4"> > >>> <td colspan="4"> > >>> <input type="button" id="saveCfg" valign="center" > >>> class="submitButton ui-state-default ui-corner-all ui-priority- > >>> primary" onclick="javascript:location.href='/SSO/configSave/';" > >>> style="width:200px;" value="Save complete settings"/> > >>> </td> > >>> </tr> > >>> </table> > >>> </body> > >>> </html> > >>> {% endblock %} > -- You received this message because you are subscribed to the Google Groups "Django users" group. 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.