【问题标题】:how to define global queryset object which i can use in my django views如何定义我可以在我的 django 视图中使用的全局查询集对象
【发布时间】:2019-09-25 15:46:15
【问题描述】:

我想定义全局变量,该变量存储数据库表中的数据,用于该模型中的特定过滤器。我需要定义的每个视图函数中的数据。我不想每次调用函数时都触发查询,如果有 ajax 调用,我可以重用该对象。如果页面刷新,那么我将再次进行查询,但如果进行了任何 ajax 调用,我将在同一页面上进行,我可以在不触发 DB Query 的情况下重用相同的全局变量。 我正在为此使用 django 框架。 对此有何建议,我该如何优化此解决方案? 谢谢!!

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    您可以为此使用 context_processors: 注意:Context_processor 总是只返回字典

    例如:

    context_processors.py

    def global_data(req):
       your_global_query = YourModel.objects.all()
       return {'queryset':queryset}
    

    现在你需要在你的 settings.py 文件中添加这个函数

    TEMPLATES = [
        {
    
            'OPTIONS': {
                'context_processors': [
                 ..........
                'your.path.to.global_data'
    

    【讨论】:

    • 感谢您的回复!但是对于每个网络请求,我的模型中都有一些过滤器。对不起,我忘了提。所以当我的页面刷新时,我可以理解我需要触发一个 DB 查询,但是如果我在同一个视图函数上有一个 ajax 调用,那么有什么办法可以解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2016-03-22
    相关资源
    最近更新 更多