gpt4 book ai didi

python - 有人可以向我展示如何在 Django 中使用 threadlocals 的示例吗?

转载 作者:行者123 更新时间:2023-12-01 05:48:07 27 4
gpt4 key购买 nike

本质上,我正在尝试访问我的应用程序之一的 models.py 中的当前用户。我已经读过关于你不应该如何这样做以及你应该如何在views.py等中这样做。我想要完成的事情仅利用Django管理后端,即 View .py 根本没有被使用。

这就是我转向线程局部的原因。我浏览了许多与此相关的问题,我发现的只是这个死链接:http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser

坦白说,我很困惑,希望有人能为我提供一些有关如何使用 threadlocals 的信息,包括我需要添加到 settings.py 中的设置以及需要创建哪些文件的详细信息。

最佳答案

根据评论,如果您的 Entry 模型具有 User 的外键,则无需使用 threadlocals 来获取有关某个对象的所有信息。保存或删除模型实例后的用户。

Signals子框架将为您提供您正在寻找的能力。例如,pre_delete 可用于在删除对象之前发送电子邮件。 post_save 可以在创建或更新条目后发送。

信号处理程序将接收触发信号的对象的实例,并且您将能够访问用户对象,包括其所有属性以发送电子邮件。虽然数据库中只存储了 User 的 id,但 Django 将允许您通过foreignkey 字段访问完整的对象。

[编辑]

要在信号处理程序中获取对象实例,请从传递给处理程序的 kwargs 中检索它:

def my_callback(sender, **kwargs):
instance = kwargs.get('instance')
# you can now reference instance.user
# send email code here

关于python - 有人可以向我展示如何在 Django 中使用 threadlocals 的示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com