您的位置:首页 > 编程语言 > Go语言

django - session初步

2015-09-11 17:00 501 查看
最近遇到一个比较令我这菜的不再菜头疼的问题:

点击 url A (url A中包含参数P), 跳转到 url B, 要求跳转到url B的同时传递参数P,但参数P不能出现在url上。

就这个问题试来试去:

redirect, HttpResponseRedirect, reverse

发现以上均不行, 后来询问某大牛,才知道有session这么东东(原谅我太菜

)

下面简要小结一下 session的用法,顺便将上面那个问题记录下。

环境:

python: 2.7 djnao: 1.8.3

django session简介:

session框架让你存储和获取访问者的数据信息,这些信息保存在服务器上(默认是数据库中),以 cookies 的方式发送和获取一个包含 session ID的值,并不是用cookies传递数据本身。

session所用的数据库为: django_session, 定义如下:



配置session

settings.py
INSTALLED_APPS = (
'django.contrib.sessions',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
)
SESSION_COOKIE_AGE=1209600  # (单位s)默认2周</span>


操作session

问题:

点击 url A (url A中包含参数P), 跳转到 url B, 要求跳转到url B的同时传递参数P,但参数P不能出现在url上; 同时在url B的html模板中改送一个ajax post 请求, 请求url C, 而在url C的视图函数中要得到这个参数P

解决办法:

url A ---P---> url B |

url C <---P---|

views.py>
def view_A(request, param_P):
request.session['param'] = param_P
return HttpResponseRedirect(reverse('blog.views.view_B'))
def view_B(request):
param=  request.session.get('param')
return render(request, 'index.html')
def view_C(request):
param=  request.session.get('param')
return HttpResponse(json.dumps({"status": "1"}), content_type="application/json")


urls.py
from django.conf.urls import include, url
from blog.views import *
urlpatterns = [
url(r'^/views_A/?P<P>\w+/$', view_A),
url(r'^/views_B/$', view_B),
url(r'^/views_C/$', view_C),
]


index.html中提交, url C, 但 url C 中不包含参数P, 这时, session中已经有参数P所以不必显示提供参数P

流程:

(1)

http://localhost:8000/view_A/param_P

-->

(2)

http://localhost:8000/view_B

(3)

(模板: index.html)

.ajax({

//...

url: "/view_C/",

//...

});

(4)

在view_C中可以能通过session取出参数P
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: