繁体   English   中英

视图之间的Django会话不起作用

[英]Django sessions between views not working

我无法在坐标函数中访问变量solo变量。 调试语句“ solo used:”输出“ none”。 我需要做些什么才能使这项工作? 感谢您的想法。

在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')

请注意,我是通过ajax从map.js调用坐标的:

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');
    }
  })

请注意,我在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'
    ]

如有疑问,请阅读文档

  1. 确保django.contrib.sessions.middleware.SessionMiddleware在您的MIDDLEWARE中的设置中。
  2. 确保正确设置了会话引擎
    • 如果使用的是数据库支持的会话,则必须确保django.contrib.sessions位于设置的INSTALLED_APPS中,并且迁移已经运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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