我正在Django中创建一个webapp。我已经完成了https://docs.djangoproject.com/en/dev/intro/的Django教程和部分文档
我有一个问题,如何在服务器端的请求之间存储其他数据。 Django对用户真的很酷,如下:
在views.py中:
def login_user(request):
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)
现在在另一个函数中,您可以使用存储在后端的信息,该信息通过csrf令牌关联,如下所示:
在views.py中
@login_required
def myappformmethod(request):
user = request.user
msg = 'hello '+user.username
生成的html文件不包含有关已记录用户的任何直接信息,但它将csrf标记保留为表单字段:
<form name="myform" action="/myapp/myappformmethod" method="post" onsubmit="prepare()">
<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='NwKW2lFWSkkNEasdd3ExHe1l5ltzQi' /></div>
我想存储一些与html不可见的会话相关数据(例如喜欢的颜色),但会存储在服务器端,并且可以使用以下内容:
if request.favourite_color:
color = request.favourite_color
而不使用
if request.POST.get('favourite_color'):
request.POST.get('favourite_color')
易受手动表单元素操作的影响(如果使用表单字段传递[类型:隐藏没有帮助,因为您也可以编辑它们])
aproriate方法是添加字段来请求和生成像前面提到的“登录”方法......但是如何做?
谢谢!
答案 0 :(得分:9)
您正在寻找的功能称为“会话”,Django直接支持:
https://docs.djangoproject.com/en/dev/topics/http/sessions/
......以下是该页面的两个例子:
request.session['fav_color'] = 'blue'
fav_color = request.session['fav_color']