Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-在动态导航栏中避免重复查询的最佳方法是什么?_Python_Django - Fatal编程技术网

Python Django-在动态导航栏中避免重复查询的最佳方法是什么?

Python Django-在动态导航栏中避免重复查询的最佳方法是什么?,python,django,Python,Django,我目前正在开发一个有两个应用程序的项目。当用户登录系统时,导航栏将根据用户在数据库中拥有的权限显示链接 如果用户仅具有应用程序1的权限,则其显示的链接将仅对应于此应用程序,如果用户仅具有应用程序2的权限,则相同。如果用户对这两个应用都有权限,导航栏将显示这两个应用的所有链接 由于是动态的,导航栏必须对数据库进行查询。因此,我希望避免每次加载页面时都进行查询 我认为,在视图中,一个选项是第一次进行查询,然后将其与request.session一起存储: Try: #If the query ha

我目前正在开发一个有两个应用程序的项目。当用户登录系统时,导航栏将根据用户在数据库中拥有的权限显示链接

如果用户仅具有应用程序1的权限,则其显示的链接将仅对应于此应用程序,如果用户仅具有应用程序2的权限,则相同。如果用户对这两个应用都有权限,导航栏将显示这两个应用的所有链接

由于是动态的,导航栏必须对数据库进行查询。因此,我希望避免每次加载页面时都进行查询

我认为,在视图中,一个选项是第一次进行查询,然后将其与request.session一起存储:

Try:  #If the query has already been made, it accesses the saved value
  query = request.session['navbar']
Except: # If the query has not been made, makes it and saves it in request.session['navbar'] 
  request.session['navbar'] = #QUERYCODE

这是处理问题的好方法吗?还有其他更好的方法吗?

如果此时确实需要此优化,可以使用@cached_属性并将确定用户是否有访问权限的逻辑放在其中。request.session方法是否有问题?如果此时确实需要此优化,您可以使用@cached_属性,并将确定用户是否具有访问权限的逻辑放在其中。request.session方法有任何问题吗?