简介:许多朋友问有关Django如何将用户权限返回前端问题的问题。本文的首席CTO笔记将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
任何页面的登录状态的头部显示部分都应是一个块,其他页面继承了此块。该块写在初始化的JS中,登录状态是从背景获得的。
有时,我们需要一些变量来使用模板模板页面。这些变量在views.py.py.py.py.the.cy中没有返回设置。例如,以下代码:
#编码:UTF-8
从django.shortcuts导入渲染
DEF索引(请求):
上下文= {}
上下文['title'] ='测试标题'
返回渲染(请求,'index.html',上下文)
以上是views.py.t的方法之一。如下:
html
头/头
身体
H3 {title}}/H3
p是否登录:{{request.user.is_authenticated}/p
/身体
/html
除标题变量值外,响应结果还具有是否登录。登录信息来自请求变量。问题在于,请求变量未写入views.py.pys.pys.py的上下文中,并且模板不必获取变量。
当时这并不是一无所有。我逐步进行分析。解释原理后,您自然了解如何设置模板的全局变量或默认变量。
渲染方法是render_to_response的简短方法。上面的views.py代码等同于以下内容:
#编码:UTF-8
来自django.shortcuts导入render_to_response
来自django.template导入requestContext
DEF索引(请求):
上下文= {}
上下文['title'] ='测试标题'
返回render_to_response('index.html',context,requestContext(request))
如果删除了render_to_response的第三个参数,则requestContext(请求)部分。
index.html模板页面的值无法获得{{request.user.is_authenticatiencation}},也就是说,没有请求变量传递到首页。很明显requestContext至关重要。
RequestContext的内容可从官方Django文档中找到。
此类将分析设置模板设置中的Context_Processors配置。新的Django Project settings.py文件中的默认模板设置如下:
模板= [
{{{
'后端':'django.template.backends.django.djangotemplates',
'dirs':[],
'app_dirs':是的,
'选项': {
'Context_Processors':[
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',,
] ,,,,
},,
},,
这是给予的
每个人都可以发现Context_Processors具有一系列设置,其中Django的源代码是根据Django.template.context_processors.request找到的。
Django安装在Python安装目录中的LIB/SITE包装/目录中。查找django/template/context_processors.py文件。打开它时,您可以看到请求方法:
DEF请求(请求):
返回{'请求':请求}
此方法返回字典,键是请求,而值是请求对象。显然,渲染中的请求对象是通过在设置中加载context_processors list方法来获取字典项目。
我们还可以使用此方法为Django项目设置一个全局模板变量。例如,我的Django名称是myProject,并在myproject/myproject目录中创建Contexts.py文件。代码如下:
#编码:UTF-8
来自django.conf导入设置
#置
def lang(请求):
返回{'lang':settings.language_code}
该文件的方法需要请求参数,最后您需要返回字典。
再次打开settings.py文件,添加刚刚用模板编写的方法:
模板= [
{{{
'后端':'django.template.backends.django.djangotemplates',
'dirs':[],
'app_dirs':是的,
'选项': {
'Context_Processors':[
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',,
#customized模板全局变量(默认变量)
'myproject.contexts.lang',
] ,,,,
},,
},,
这是给予的
添加全局变量后,我们可以使用该变量,而无需在任何位置上手动编写相关代码以渲染模板页面。
许多人说,Django自己的背景只能用于管理。实际上,仍然可以使用自己的管理模块来完成简单的多用户发布需求。核心是使用请求。用户获取当前的登录用户,然后根据用户显示内容以筛选内容。
复杂的用户权限管理使用Django-Guardian和其他组件
模拟了一个基于用户输入的每日数据生成视觉报告的项目。期望根据不同的报告类型预设不同的数据模板。当前端请求时,请发送报告类型和数据范围的类型用户信息。在后端。后端返回数据后,将其交给前ECHART处理。
整个下午才能完成基本背景,因为目的是实现多个用户,而后者则可以免费编写。
呢[htzmq)4(7bxhad`k?f] qslr.png]()()
在创建和修改模型时,将显示关联的外键的所有值,例如显示所有用户来。,并且不要忘记列表页面列表的筛选
特点
字符形的数据相对容易获得。
senddata = {“ exportType”:exportType,exportType,
“ bugids”:bugids,
“测试”:json.stringify({“ test”:“ test”})
};
只需使用exportType = request.get.get.get(“ exportType”)在django的后端
您可以正常获取此数据。
注意:Python2.7中的数据由Unicode编码。如果您想使用它,有时您需要转向str
结果:示例:
DEBL类型“ Unicode”
大批
获取数组类型的数据。如果您使用获得字符串数据的方法,则结果无。我们想使用此方法:
bugids = request.get.getList(“ bugids []”)
以这种方式获得的数据是数组类型。
注意:所获得的数组中的元素是Unicode编码的,并且需要某个点需要该部分
结果:示例:
?通过URL
[14/JUL/2016 11:00:41]“ get/testtools/exportbug/?exportType = exporttype = explbugids%5b%5d = 102bugids%5D = 101bugids%5D
?获得的数据
[u'102',u'101',u'100',u'99',u'98',u'97',u'96',u'96',u'95',u'94',u'94',u'93',u'92',u'91',u'90',u'89',u'88',u'87'
典型的
典型数据可以视为字符串数据。获得相应的字符串后,您可以使用JSON模块将其格式化。
对于前端,传递字典的典型数据是传递JSON数据,因此使用方法是:
“测试”:json.stringify({“ test”:“ test”})
结果:示例:
{“ test”:“ test”}键入'unicode'
相关的源代码
?获取方法
GET方法是WSGI中的一种方法。
def获取(自我):
#WSGI规格说“ query_string”可能是清晰的。
raw_query_string = get_bytes_from_wsgi(self.envring,'query_string','')
返回http.querydict(raw_query_string,encoding = self._encoding)
最终返回是http.querydict(raw_query_string,encoding = self._encoding)http的原始数据,而QueryDict在MultivalueDics中继承了,因此我们只看了多亚数。
?数量化
实际上,源代码看起来并不困难。
def get(self,key,default = none):
”“”
返回传递密钥的最后一个数据值。如果键do
或值是一个空列表,然后默认被拒绝。
”“”
尝试:
val = self [键]
除了键:
返回默认值
如果值== []:
返回默认值
返回阀
def getList(self,key,default = none):
”“”
返回传递密钥的值列表。如果键不存在,
然后重新列出默认值。
”“”
尝试:
返回super(Multivaledict,self).__ getItitItem __(键)
除了键:
如果默认为无:
返回 []
返回默认值
def __getItem __(self,key):
”“”
返回该密钥的最后一个数据值,或[]如果是一个空列表;
如果找不到的话,请提高钥匙扣。
”“”
尝试:
list_ = super(MultivalueDict,self).__ getItitItem __(键)
除了键:
提高MultivaleMedIctKeyError(reter(key))
尝试:
返回列表_ [-1]
除了IndexError:
返回 []
结论:以上是Django如何返回用户权限的主要CTO注释,以获取对前端的相关内容答案。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?