简体   繁体   中英

Django sessions between views not working

I'm unable to access variable the variable solo in my coordinates function. The debug statement "solo used:" outputs "none". What do I need to do to make this work? Thanks a mil for your thoughts.

in views.py

def go(request):
  print "go executing"
  lat = request.GET.get('latitude', None)
  lng = request.GET.get('longitude', None)
  if not lat or not lng:
    print "ERROR: BAD URL PARAMETERS"
  # call the dronekit module we wrote before
  solo = drone.drone()
  print "solo instantiated: ", solo
  solo.takeoff()
  solo.flyTo(lat,lng, 60)
  resp = "Arrived and landed. <br> <a href=/rtl>Return Home</a>"
  request.session['solo'] = "hello"
  return HttpResponse(resp)

def coordinates(request):
  #print "Request: ", request
  #if request.method == 'GET':
  solo = request.session.get('solo')
  print "solo used: ", solo

  # print "made it to views.py, and lat: ", solo.getlat(), ". lng: ", solo.getlng() 
  #print "lat: ", lat, ". lng: ", lng
  #lat1 = fly_drone.getlat()
  #lat2 = fly_drone.getlng()
  #print "lat1: ", lat1, ". lat2: ", lat2
  return HttpResponse('check')

Note that I'm calling coordinates from map.js via ajax:

function refreshData()
{
  x = 5;
  setTimeout(refreshData, x*1000);
  console.log("refreshing now");
  $.ajax({
    url: '/coordinates/',
    type: 'get',
    success: function(data){
      //alert(data);
    },
    failure: function(data){
      //alert('Got an error dude');
    }
  })

Note that I do have session serializer on in settings.py:

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
...
MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]



 INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'skyway_app'
    ]

When in doubt, read the docs :

  1. Ensure that django.contrib.sessions.middleware.SessionMiddleware is in your MIDDLEWARE in your settings.
  2. Make sure your session engine is set up correctly
    • If you are using database-backed sessions, you have to make sure that django.contrib.sessions is in INSTALLED_APPS in settings and that migrations have run.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM