sessionid的Django(Python)问题

sessionid的Django(Python)问题,python,django,Python,Django,sessionid有问题:request.session.session\u key在每次页面刷新/表单提交时生成一个键 而此:request.COOKIES[settings.SESSION\u COOKIE\u NAME]投诉找不到“sessionid”键 我错过什么了吗?我需要一个在我的站点上跨页面请求持久化的“密钥”。即使在浏览器关闭/3周等情况下,我也需要它保持不变。如果是Django,我该怎么做 我需要配置什么吗?如果我对sessionid及其生成方式有误解,请纠正我 谢谢你的回复

sessionid有问题:
request.session.session\u key
在每次页面刷新/表单提交时生成一个键

而此:
request.COOKIES[settings.SESSION\u COOKIE\u NAME]
投诉找不到“sessionid”键

我错过什么了吗?我需要一个在我的站点上跨页面请求持久化的“密钥”。即使在浏览器关闭/3周等情况下,我也需要它保持不变。如果是Django,我该怎么做

我需要配置什么吗?如果我对sessionid及其生成方式有误解,请纠正我

谢谢你的回复

问候,, W


My settings.py是:

听起来您的浏览器不接受Django发送的会话cookies

您的浏览器应该能够告诉您正在使用应用程序的页面响应设置哪些cookie。检查是否确实发送了“sessionid”cookie,以及域和路径是否正确

如果settings.py文件中的
SESSION\u COOKIE\u DOMAIN
SESSION\u COOKIE\u PATH
设置不正确,可能会导致Django在浏览器中设置COOKIE,但这些COOKIE不会返回到服务器

如果要验证整个设置,请阅读以下内容:

简而言之,您需要:

  • 在您的
    安装的应用程序中安装
    'django.contrib.sessions'
  • 中间件类中有
    'django.contrib.sessions.middleware'
    ;及
  • 在生产服务器上,您可能需要设置
    SESSION\u COOKIE\u DOMAIN
    SESSION\u COOKIE\u PATH
    ,以便与同一域或相关域上的其他web应用程序进行良好交互
编辑:

查看了粘贴的设置后,我可以看到有两种不同的情况发生,每种情况都足以阻止会话cookie工作

  • SESSION\u COOKIE\u DOMAIN
    设置为“mydomain.com”

    通用TLD的cookie要求“域”部分至少包含两个句点(“.”)分隔符。这会阻止人们为“.com”等域设置cookie。(我认为,国家级管辖下的域的cookie需要三个周期。)

    将其更改为“.mydomain.com”,浏览器应返回该文件

    在开发过程中(在本地计算机上运行,版本为127.0.0.1),请将此设置留空,否则浏览器将根本不接受cookie

  • 会话路径设置为“/tmp”

    这看起来是个错误,除非您的web应用程序托管在“”

    SESSION\u COOKIE\u PATH
    用于指示COOKIE的“路径”组件,即COOKIE将返回到服务器的URL前缀。这样,您就可以在“mydomain.com/firstapp/”和“mydomain.com/secondapp/”分别托管一个应用程序和另一个应用程序,并且您可以确保“sessionid”cookies不会在它们之间混淆

    如果只有一个应用程序托管在此域名下,则将其留空,它将默认为“/”(整个域)

    要控制Django在文件系统上存储会话数据的位置(这看起来就像您正在尝试做的),可以使用
    session\u FILE\u PATH
    设置。默认情况下,它被设置为“/tmp/”,因此您根本不需要设置它


  • 我有一个类似的问题,我通过将SESSION\u COOKIE\u NAME设置为默认的“sessionid”之外的其他名称来修复它。我想google analytics可能在某种程度上破坏了cookie。

    我不确定到底出了什么问题。它仍然会每次生成一个新密钥。My settings.py是这样的:我想我已经完成了手册中的内容。有什么想法吗?