基本上我想在 Django 中创建一个变量持久化,但我不知道如何。
更准确地说,我希望用户在登录站点时选择一个特定的项目(例如通过 ChoiceField)。然后,只要他不选择其他项目,站点就“知道”他选择了哪个项目,以便他可以执行与该项目相关的一些操作。
这怎么可能?会话变量是要走的路吗?或者也许是缓存系统?一些提示将不胜感激:)
如果我不够清楚,请告诉我
django global-variables django-cache persistent-data django-sessions
这可能无法实现,但是当某些情况发生时,我想修改某些已登录用户的会话数据(标记为下次他们加载页面时需要运行一些额外的逻辑)。
有没有一种方法可以通过其ID访问用户的会话?
在模板中,当我使用时
{% if topic.creator.is_authenticated %}
Online
{% else %}
Offline
{% endif %}
用户结果总是在线,即使他们刚刚退出.所以我想知道如何正确检查在线用户?
我可以在中间件中获取当前会话或cookie吗?
我试过但是我得到了:
'WSGIRequest' object has no attribute 'session'
如何使用javascript获取最终存储在cookie中的django会话ID?
我需要获取该 ID 的原因是我正在通过 REST API 执行所有操作,包括身份验证。因此,开发移动应用程序的人正在使用 ionic,他们希望向 API 发出请求以获取该会话 ID - 然后在未来的请求中使用它。有什么建议吗?
从我这里的理解session_key 是会话对象的主键。
当我检查 request.session 时,我确实找到了一个会话对象,但它的主键没有设置。它似乎没有保存。所以现在我通过检查每个视图是否存在 request.session.session_key 来解决这个问题,如果不存在,调用 save()。
有没有人解释为什么我似乎只能得到未保存的会话对象?
在我的观点之一中,我正在保存一些这样的会话:
def myview(request):
    request.session['session_1'] = 'value1
    request.session['session_2'] = 'value2'
然后,在同一视图函数以及其他应用程序上找到的其他视图上,我尝试获取如下会话值:
   session_value1 = request.session['session_1'] 
   session_value2 = request.session['session_2']
我希望“session_1”和“session_2”的值永远不会过期,并且可以在网站上的任何位置使用(就像同一应用程序上的其他视图和其他应用程序上的视图一样)。
我的问题是,当我在同一页面/视图上(如上所述)时,当我刷新页面时,我在检索 session_1 和 session_2 值时遇到问题。但假设我转到另一个页面然后返回原始页面,“session_1”和“session_2”值就会消失。此外,“session_1”和“session_2”的值在任何其他页面/视图上都不可用。
我的 settings.py 上没有会话设置,因此会话的所有值都是默认值。
有什么想法为什么会话没有保存吗?谢谢你!
我正在使用登录中间件来创建用户登录表单.
用户成功登录后,从视图中检索用户ID的最佳方法是什么?
创建了一个middleware.py:
class LoginMiddleware(object):
    def process_request(self, request):
        if request.path != self.require_login_path and request.user.is_anonymous():
            if request.POST:
                return login(request)
            else:
                return HttpResponseRedirect('%s?next=%s' % (self.require_login_path, request.path))
我向 CORS_ALLOWED_ORIGINS 和 CSRF_TRUSTED_ORIGINS 以及 ALLOWED_HOSTS 添加了域的多个变体。我添加django.template.context_processors.csrf到 context_processors 中。我没有将 CSRF_COOKIE_SECURE 和 SESSION_COOKIE_SECURE 设置为 true (我希望我可以更改)。我想不出还有什么可以让它在 Django admin 上工作,并且在我设置会话身份验证(包括配置 csrf 和会话 cookie)后它才停止工作。当我没有对前端进行任何身份验证时,Django 登录工作正常,甚至像我说的那样,它在本地主机上工作正常。
我真的很感激任何有关我可以尝试解决此问题的其他建议。
更新:现在我收到此错误消息 Referer checking failed - https://myapp.herokuapp.com/admin/login/?next=/admin/ does not match any trusted origins.
我认为问题可能在于它是一个 heroku 子域,所以我添加了一个域和一个 SSL 证书。新域出现完全相同的错误。
我的 CORS_ALLOWED_ORIGINS 包括https://myapp.herokuapp.comandhttps://www.example.com和,因为斜杠不断从浏览器复制,https://www.example.com/. 即使有 SSL 证书,我也包含了每个地址的 http:// 版本。
django ×9
csrf ×1
django-admin ×1
django-cache ×1
django-csrf ×1
django-views ×1
javascript ×1
python ×1
session ×1