Comments in several places inline below:
> Thanks for the response... I opened the *rendered* source page in Mozilla > and couldn't find the csrf_token even though I had already added the { % > csrf_token %} . Something seems wrong. Any suggestions moving forward ? > > You should be seeing a hidden element after your opening <form> tag that replaces the {% csrf_token %} that looks something like this: <input name="csrfmiddlewaretoken" value="Pm1X5O8teUDDU6WCzjP13fBzlrcoLLXZ" type="hidden"> If you aren't seeing that, chances are your form submission is not going to work since the CSRF token isn't being generated properly. On Sat, Sep 12, 2015 at 12:56 AM, James Schneider <jrschneide...@gmail.com> > wrote: > >> In the rendered version sent to the browser, are you able to validate >> that the CSRF token is actually being created and inserted as a hidden >> element in your form? >> >> Also, it doesn't look like any of your buttons are marked as type=submit. >> Not sure if that matters when submitting via JS though. >> >> -James >> On Sep 11, 2015 7:56 PM, "Kevin Anyanwu" <kanya...@fonality.com> wrote: >> >>> Can anyone help ? >>> >>> On Thu, Sep 10, 2015 at 8:34 PM, Kevin Anyanwu <kanya...@fonality.com> >>> wrote: >>> >>>> base_1.html >>>> >>>> >>> <!DOCTYPE html> >>>> <html lang="en"> >>>> <head> >>>> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> >>>> <meta charset="utf-8"> >>>> <title>goals</title> >>>> <meta name="generator" content="Bootply" /> >>>> <meta name="viewport" content="width=device-width, initial-scale=1, >>>> maximum-scale=1"> >>>> >>>> <!--[if lt IE 9]> >>>> <script src="//html5shim.googlecode.com/svn/trunk/html5.js >>>> "></script> >>>> <![endif]--> >>>> <!-- Custom CSS --> >>>> <link href="../../static/css/app.css" rel="stylesheet"> >>>> >>>> </head> >>>> <body> >>>> >>>> <div id="menu" class="default"> >>>> <ul> >>>> <li><a href="#">Cirriculmn</a></li> >>>> <li><a href="#">Notes</a></li> >>>> <li><a href="#">Collaborte</a></li> >>>> </div> >>>> >>>> >>>> <!-- script references --> >>>> <script type="text/javascript" src="jquery.min.js" >>>> charset="utf-8"></script> >>>> <script src="// >>>> ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> >>>> <script src="../../static/assets/js/bootstrap.min.js"></script> >>>> <script src="../../static/assets/js/menubar.js"></script> >>>> </body> >>>> </html> >>>> >>>> On Thu, Sep 10, 2015 at 8:49 AM, monoBOT <monobot.s...@gmail.com> >>>> wrote: >>>> >>>>> show us the base_1.html >>>>> >>>>> Are you sure that base_1.html template is correct? There is no reference to a <form> anywhere in that template. There's also no obvious reference to any JS files that would run the submit function that you are talking about. Are you inserting the form via JS? If so, you'll need to manually populate the CSRF hidden input and/or include the CSRF token in your AJAX response headers. Django won't do this for you unless you specifically write a view to generate the HTML on the server side and send it as a response to an AJAX request, which doesn't appear to be the case. > 2015-09-10 16:18 GMT+01:00 <kanya...@fonality.com>: >>>>> >>>>>> By the way, I am using Django 1.8.3 (final) >>>>>> >>>>>> >>>>>> On Thursday, September 10, 2015 at 8:16:11 AM UTC-7, >>>>>> kany...@fonality.com wrote: >>>>>>> >>>>>>> First of all I have done my research and found no reasonable >>>>>>> explanation for my issue. I have a site on heroku that works fine on the >>>>>>> first page, but when I click a button that I have programmed to go to >>>>>>> another page, I obtain the infamous CSRF error. The reason for this >>>>>>> error >>>>>>> is CSRF cookie is not set. Here is a description of the background work >>>>>>> done on the dev side: >>>>>>> >>>>>>> 1. Settings.py >>>>>>> >>>>>>> MIDDLEWARE_CLASSES = ( >>>>>>> 'django.contrib.sessions.middleware.SessionMiddleware', >>>>>>> 'django.middleware.common.CommonMiddleware', >>>>>>> 'django.middleware.csrf.CsrfViewMiddleware', >>>>>>> 'django.contrib.auth.middleware.AuthenticationMiddleware', >>>>>>> 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', >>>>>>> 'django.contrib.messages.middleware.MessageMiddleware', >>>>>>> 'django.middleware.clickjacking.XFrameOptionsMiddleware', >>>>>>> #'django.middleware.security.SecurityMiddleware', >>>>>>> 'django.middleware.csrf.CsrfViewMiddleware', >>>>>>> ) >>>>>>> >>>>>> One other thing I noticed is that you have 'django.middleware.csrf.CsrfViewMiddleware' defined twice in MIDDLEWARE_CLASSES. Not sure if that is related, but you should remove the bottom entry anyway. > >>>>>>> 2. base.py >>>>>>> >>>>>>> <form class="col-lg-12" method = "post" id="loginform" action= >>>>>>> "/menu/"> >>>>>>> {% csrf_token %} >>>>>>> >>>>>>> <div class="input-group" style="width: >>>>>>> 65%;0px;text-align:center;margin:0 auto;"> >>>>>>> <input class="form-control input-lg" title="Don't worry. >>>>>>> We hate spam, and will not share your email with anyone." >>>>>>> placeholder="Email address" type="text"> >>>>>>> </div> >>>>>>> <br> >>>>>>> <div class="input-group" style="width: >>>>>>> 65%;0px;text-align:center;margin:0 auto;"> >>>>>>> <input class="form-control input-lg" title="Don't >>>>>>> worry. We hate spam, and will not share your email with anyone." >>>>>>> placeholder="Password" type="text"> >>>>>>> </div> >>>>>>> <br> >>>>>>> <br> >>>>>>> >>>>>>> <button class="btn btn-lg btn-primary" style = "width: >>>>>>> 100px" type="button" onClick ="logIn();">Log In</button> >>>>>>> >>>>>>> <br><br> >>>>>>> >>>>>>> </form> >>>>>>> >>>>>> Where exactly is base.py used? None of your other code that you've posted references it. You'll need to make sure that you are invoking the template engine using RequestContext if you want the {% csrf_token %} tag to work. Also, base.py appears to be entirely made up of HTML?? Did you mean base.html here? > >>>>>>> 3. views.py >>>>>>> >>>>>>> def menu(request): >>>>>>> >>>>>>> return render_to_response('home/base_1.html', context_instance = >>>>>>> RequestContext(request, {}) ) >>>>>>> >>>>>>> Is there another view in play? This view uses base_1.html, but as I mentioned earlier, base_1.html doesn't have any form references. It also won't do anything with the data submitted in the form. > 4. javascript for the function logIn() that is executed when the button is >>>>>>> clicked from (2) >>>>>>> >>>>>>> >>>>>>> function logIn () >>>>>>> { >>>>>>> alert('Form has been submitted'); >>>>>>> document.getElementById('loginform').submit(); >>>>>>> } >>>>>>> >>>>>> I think this will work, but as an end-user, I despise any site that makes use of alert(). Just sayin'... >>>>>>> >>>>>> >>>>>>> I am seriously bewildered and cannot understand why the base_1.html >>>>>>> site is not being rendered and I am getting this CSRF error ! Please >>>>>>> help >>>>>>> me, >>>>>>> >>>>>> So am I. Can you post the urls.py, views.py, forms.py, models.py, and related templates for the form page? That is likely where your problem lies (since the issue appears to be related to submitting the form, so the landing page can be taken out of the equation for now). Also, this page may be a good reference for CSRF issues if you haven't seen it already: https://docs.djangoproject.com/en/1.8/ref/csrf/ -James -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CA%2Be%2BciUjrApK1%2BX2%3DaWVw4QRRnwJCssyiz9s%3DhDqoMgESGquAA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.