Django全局函数和变量

SAF*_*R N 0 python django

我的观点中有一个功能.我想在其他一些应用程序中使用此功能.有没有办法shop_id全局声明这个变量().

if "current_shop" in request.session:
    shop_id = request.session['current_shop']
elif request.user.is_superuser:
    shop_id = 1
else:
    shop_id = 2
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

使它成为你的观点使用的功能; shop_id从函数返回值:

def get_shop_id(request):
    if "current_shop" in request.session:
        return request.session['current_shop']

    return 1 if request.user.is_superuser else 2
Run Code Online (Sandbox Code Playgroud)

并在您的意见:

shop_id = get_shop_id(request)
Run Code Online (Sandbox Code Playgroud)

如果你把它放在一个单独的模块中; 比如说utils.py,你可以用以下方法导入它:

from projectname.utils import get_shop_id
Run Code Online (Sandbox Code Playgroud)

或使用相对导入:

from .utils import get_shop_id
Run Code Online (Sandbox Code Playgroud)

提供utils.py与您的观点相同的包装.