kbd*_*dev 4 python django cookies jquery wagtail
我正在构建一个网站,根据用户来自哪个省份,该网站将包含一些不同的内容。如果没有设置 cookie,我已经使用 jQuery/Bootstrap 设置了一个模式窗口,当用户登陆网站时弹出:
基本文件
<script type="text/javascript">
$(document).ready(function() {
if (Cookies.get('province') == null) {
$('#provinceModal').modal('show');
}
$('button#ontario').click(function() {
Cookies.set('province', 'ontario');
$('#provinceModal').modal('hide');
});
$('button#alberta').click(function() {
Cookies.set('province', 'alberta');
$('#provinceModal').modal('hide');
});
$('button#quebec').click(function() {
Cookies.set('province', 'quebec');
$('#provinceModal').modal('hide');
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
cookie 设置正确,因为我可以在单击其中一个按钮后在浏览器中看到它们。我遇到的问题是使用 Python 检索 cookie。我想保存省变量,然后使用 if 语句显示某些内容(取决于省等于什么)。
我已经试过了,我能够将 cookie 打印到控制台:
饼干.py
import Cookie
import os
import requests
def get_cookies():
s = requests.session()
r = s.get("http://www.twitter.com")
cookie = r.cookies['_twitter_sess']
return cookie
Run Code Online (Sandbox Code Playgroud)
如何将此值传递给 Python 中的变量以在模板中使用?我不确定我接下来应该做什么。我错过了什么?
您使用的是 Python Cookie 模块,而不是 HttpRequest 对象设置的 django 模块,如本答案中所述。(现在已经过时了,但请继续阅读!)
在您处理该 JQuery 弹出窗口的后端的视图中(大概是您将其发送到 Django 中的端点,并且该代码是您视图中的一个片段),您想使用request.session文档来检查和设置你的饼干。
例如,在 Django 视图中,它看起来像这样:
def a_standard_view(request):
print request.session
Run Code Online (Sandbox Code Playgroud)
您可以通过使用(同样,这是我最初链接的部分)继续检查 cookie 设置是否正常播放:
从 django.http 导入 HttpResponse 从 django.shortcuts 导入渲染
def faux_login(request):
if request.method == 'POST':
if request.session.test_cookie_worked():
request.session.delete_test_cookie()
return HttpResponse("You're logged in.")
else:
return HttpResponse("Please enable cookies and try again.")
request.session.set_test_cookie()
return render(request, 'foo/login_form.html')
Run Code Online (Sandbox Code Playgroud)
在您的特定实例中,您将需要一个处理 jquery 的端点(例如 /ajax/province/ 或类似的)。您的 Jquery 将需要使用get 调用来使用您尝试存储在会话数据中的任何详细信息来访问该端点。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |