我需要在用户启动会话时创建一个随机值,并在用户登录或注册后存储它。必须在用户注销后删除。我正在使用session.session_key,但可以是任何其他随机值。为什么session.session_key?因为它会在用户进入网站时自动生成。当用户进入网站,他们可以add items给他们的shopping cart,但不能购买到logs in或signs up。所有的cart_items 都使用random valuea token,所以如果我可以在用户登录或注册后保存这个值,我可以查询已经保存在数据库中的cart_items 并恢复用户已经放入这个的项目shopping cart。因此,当用户输入时,session.session_key会创建一个新用户,但在创建用户logs in或signs up其他用户之后session.session_key。使得无法使用此值在用户not logged in和user logged in.我的逻辑:1.- 保存session.session_key在 Cookie 中。2.- 在用户登录或注册后session.session_key创建一个新的。我们需要session.session_key用保存在 Cookie 中的来替换这个新的。3.-session.session_key查询所有使用此值作为 ID 创建的对象并做一些事情。代码:使用此函数生成需要存储的购物车 ID:def _cart_id(request): cart = request.session.session_key if not cart: request.session.create() cart = request.session.session_key return cart # Ultimately return cart注册视图:@transaction.atomicdef signupView(request): if request.method == 'POST': ...do stuff ... ### Save cart id in Cookie before authenticating set_cookie_values(request) ### Authentication user = authenticate(username=username, password=raw_password) login(request, user) ### Get cart id from Cookie cart = request.COOKIES.get('cart', '') delete_cookie_values(request) return redirect('cart:cart_detail') else: profile_form = ProfileForm(district_list, province_list, department_list) return render(request, 'accounts/signup.html', { 'user_form': user_form, 'profile_form': profile_form})帮助存储和删除 Cookie 中的值:def set_cookie_values(request): try: cart_id =_cart_id(request) response = HttpResponse() response.set_cookie('cart_id', cart_id, max_age=9999999999) except ObjectDoesNotExist: pass return responsedef delete_cookie_values(request): response = HttpResponse() response.delete_cookie('cart_id') return response我很感激你的帮助,看看我在 Cookie 上存储 car_id 的伪代码并检索它。
添加回答
举报
0/150
提交
取消