【问题标题】:How do you call a user defined function in views.py DJANGO你如何在views.py DJANGO中调用用户定义的函数
【发布时间】:2018-08-20 04:28:15
【问题描述】:
要求是在右上角的所有页面中显示登录的用户名和他在组织中的角色。
角色可以通过他被授予的权限来识别。
我的做法:
我想在views.py 中创建一个用户定义的函数,并在每个其他函数中调用它。我创建的函数应该检查当前用户的权限,并根据他们决定他的角色。所有这些详细信息都必须发送到base.html,以便在每次加载页面时呈现并显示用户名和他的角色。
欢迎对其他方法提出任何建议,如果我的方法完全错误,请告诉我。
【问题讨论】:
标签:
python
django
django-views
user-defined-functions
【解决方案1】:
在视图中,您可以执行以下操作:
context = {
'username': username,
'role': role,
}
return render('template.html', context)
然后在 template.html 中你会像这样渲染它:
{username} {role}
【解决方案2】:
你可以在Can I call a view from within another view?的cmets部分找到你的答案
顺便说一句,是的,您可以创建一种方法来验证用户/部门。下面是我在我的应用程序中所做的示例。
我觉得更好的方法是将这些细节作为布尔标志保存在 DB 中,并使用 django admin 的功能来简化您的工作。
def validate_details(request):
user = request.GET['username']
user_details = User.objects.filter(name=user).values_list("name", "department", flat=True)
# Call validation method defined in view
is_ok = validate_user(user_details)
if is_ok:
return render_to_response("main/landing.html", {"user": user_details["name"],"department":user_details["department"]}, context_instance=RequestContext(request))
else:
return render_to_response("main/landing.html", {"user":"NA","department":"NA"}, context_instance=RequestContext(request))