使用Google App Engine在Django Python中处理会话
我现在正在使用Google App Engine来托管我的Django应用程序。我想在我的Django应用中实现会话功能。但是,由于Google App Engine不支持Django的默认会话处理,我无法使用它。
经过一些研究(基本上就是在网上查资料),我发现gae-sessions是推荐的库。我试着理解这个库提供的示例,但我还是搞不懂它是怎么工作的。请帮我写一些代码,用来设置和维护用户的会话变量。如果你知道其他文档更好的库来处理会话,我也很乐意使用,请告诉我。
1 个回答
3
gae-sessions 使用起来非常简单。你可以按照 GitHub 页面上的说明进行设置。我将通过一个实现登录页面的例子来详细说明如何使用。
假设在你的 views.py
文件中,你定义了一个函数,如下所示:
class loginForm(forms.Form):
email = forms.CharField(label='Email')
password = forms.CharField(widget=forms.PasswordInput(),label = "Password")
def login(request):
if request.method == 'POST':
form = loginForm(request.POST)
if form.is_valid():
entered_email = form.cleaned_data['email']
entered_pass = form.cleaned_data['password']
try:
_user = user.objects.get(email=entered_email)
stored_password = _user.password
if stored_password == entered_pass:
session = get_current_session()
if session.is_active():
session.terminate()
session['email'] = entered_email
return 'REDIRECT AS REQUIRED'
else:
print "INCORRECT PASSWORD"
form = loginForm()
return render(request, 'login.html',{ 'form': form })
except:
print "EMAIL NOT REGISTERED"
form = loginForm()
return render(request, 'login.html',{ 'form': form })
else:
form = loginForm()
return render(request, 'login.html',{ 'form': form })
在上面的代码中,loginForm
用来定义用户输入登录信息的地方,也就是他们用来登录系统的凭证。login
方法用来检查用户输入的凭证是否和数据库中的匹配,如果匹配,就会使用 gae-sessions
创建一个会话。你需要在你的 views.py
文件中添加以下导入:
from gaesessions import get_current_session
在上面提到的 login
方法中,我们使用 get_current_session()
方法来访问会话,这个方法是从 gae-sessions 导入的。你可以根据需要设置会话的值。我设置了 session['email']
来保持会话。要结束会话,只需使用 session.terminate()
就可以了。
确保按照 这里 提供的安装说明进行操作。希望你觉得这些信息有用!