问题解决了!抱歉,我没有提到我正在使用dotcloud
. 这是由于dotcloud的git。dotcloud 上的项目需要postinstall
运行脚本,但使用其内置 git,它将忽略可执行位。所以我按照 url警告:postinstall 文件存在,但它不可执行。无视。. 并再次在我的项目中上传总文件。问题解决了。我认为这是因为我没有创建会话数据库。但是还有一个问题。默认会话不使用数据库作为后端对吗?即使使用后端,我项目的后端是MongoDB,它有一个惰性操作方法,我的意思是它会在使用时创建数据库。那么为什么没有syncdb
,它可能会导致这个问题呢?
我response.set_cookie
用来设置cookies。但它不能在上面显示firefox
。firebug
我试过request.session.set_test_cookie()
了,但是显示我的浏览器不支持cookie。这不可能。我也试过了Safari
,也不能设置cookie。
这是怎么回事?我确定我的浏览器支持 cookie,我可以看到 cookie 从其他站点通过firebug
.
代码如下: if request.method == 'POST': username = request.POST.get('username','') password = request.POST.get('password','')
if username != '' and password != '':
if len(username) > 20:
returnmsg = 'USR LEN'
else:
password = md5(password).hexdigest()
user_exist = User.objects(username=username)
if not user_exist: #if the list is empty
returnmsg = 'LOG ERR'
else:
for user in User.objects(username=username):
if user.password == password:
returnmsg = 'LOG OK'
#add session information
response = HttpResponse(returnmsg)
#Try 1
response['Cookie-Set']='username='+username
#try 2
response.set_cookie(key="username", value=username)
#try 3
request.session['username'] = username
user.log.append(UserLog(time=datetime.now(), ip=request.META['REMOTE_ADDR'], login=True))
user.save()
return response
else:
returnmsg = 'LOG ERR'
user.log.append(UserLog(time=datetime.now(), ip=request.META['REMOTE_ADDR'], login=False))
user.save()
else:
returnmsg = 'USR EPT'