所以我设置了Django rest框架作为电子商务网站的后端API。该网站通过React前端显示,django后端不提供此服务。
我目前正在运行本地开发服务器(分别为http://127.0.0.1:8000和http://127.0.0.1:3000)的Django后端和React前端。在未来,他们可能会在不同的领域。
当我在视图中设置会话并读取另一个会话中的内容时,如果我只是输入用于创建和直接读入浏览器的URL(仅用于测试目的),这将起作用。但是当我通过我的前端访问后端时,会话不再被访问,或者似乎无法存储。当我尝试访问我在上一个视图中设置的数据时,会发生KeyError。
我想这与我前段时间读到的内容有关,但我发现很难找到有关如何使用它的正确信息。这是否与会话ID不可用于前端的cookie有关,而只与后端本身有关?
主要问题: 我想知道如何使用上述设置来保持购物车的会话。
我的后端代码,以防有人想知道:
from django.http import HttpResponse
def cart_add(request, product_id, update, quantity):
request.session['one'] = 'created through "cart_add" view'
return HttpResponse("Created a session - cart_add")
def create(request):
request.session['one'] = 'created through "read" view'
return HttpResponse("Created a session - create")
def read(request):
print(request.session['one'])
我删除了一些不必要的代码。
答案 0 :(得分:2)
我在另一个stackoverflow问题中找到了解决方案。 This is the link to it.
通过在axios请求中添加以下内容,代码可以成功运行:
axios.get('some api url', {withCredentials: true});
所以看来我关于会话ID不可用于前端的cookie的假设是不正确的。
我还发现,我可以通过在Chrome中打开网页,然后打开开发人员工具>来查看Cookie。转到“应用”标签>点击cookies。
此处列出了所有可用的cookie,并显示了一个sessionid cookie。
答案 1 :(得分:0)
我遇到了同样的问题,在axios调用中添加withCredentials并不能解决django 2.2.3和axios 0.19.0中的问题。
如果这里的答案对您不起作用,请查看以下答案:)
React Django REST framework session is not persisting/working