导读:本篇文章首席CTO笔记来给大家介绍有关django如何把用户名传给前端的相关内容,希望对大家有所帮助,一起来看看吧。
django怎样将数据库中文件路径中的文件名传给前端显示
flask是一个很简单,也比较优美的单文件python的WEB开发框架。 bootstrap是一个强大的工具箱,我没有用过,不过有时间(这个星期)我会尝试学一下。应该会有很好的体验。
flask教程在它的官网上就有,如果你熟悉python,10分钟就学会了。
连接mysql数据库建议你不要用什么orm, 直接通过mysqllib自己写sql语句,这样更简单。 当然如果你的SQL语句不熟悉,就要找几个例子,学习一下,几分钟就可以了。 python的DBAPI2.0框架很简单就是connect, startcursor,fetchone这几个主要命令。
sqlite3比mysql更简单,connect的时间加上文件名,其余的都和mysql的用法一样。
git管理就需要安装一套环境。在linux下,比如ubuntu,你只需要apt-get 安装就可以。使用方法有些类似CVS。
实现学生管理其实有更简单的办法。只需要安装一套DJANGO,花两天学习一下它的教程。一口气就建成了。直接使用它的admin模块,几乎不用开发就能用。
Django怎么把py文件画出来的图像传到前端
Django把py文件画出来的图像传到前端,努力looks去,嗯啦看上去模型,阿狸入魔无情人啊咯恶心里去了。
Django接受前端数据的几种方法
字符型
字符型的数据相对好获取,前端传递的方法如下:
sendData = { "exporttype": exporttype,
"bugids": bugids,
"test": JSON.stringify({"test": "test"})
};
在Django的后端只要使用exporttype = request.GET.get("exporttype")
就能正常的获取到这个数据了。
注意: 在Python2.7中数据是unicode编码的,如果要使用,有时候需要进行转str
结果示例:
Excle type 'unicode'
数组型
获取数组型的数据如果使用获取字符串的数据的方法,打出的结果是None。我们要使用这个方法:
bugids = request.GET.getlist("bugids[]")
这样获取的数据就是数组类型。
注意: 获取的数组中的元素是unicode编码的,在某些时候使用需要转编码
结果示例:
•传递的url
[14/Jul/2016 11:00:41]"GET /testtools/exportbug/?exporttype=Exclebugids%5B%5D=102bugids%5B%5D=101bugids%5B%5D
•获取的数据
[u'102', u'101', u'100', u'99', u'98', u'97', u'96', u'95', u'94', u'93', u'92', u'91', u'90', u'89', u'88', u'87'
字典型
字典型数据其实可以当成字符串数据来处理,获取到对应字符串后使用JSON模块做一下格式化就行了。
对于前端来说,传递字典型的数据就是传递JSON数据,所以使用的方法是:
"test": JSON.stringify({"test": "test"})
结果示例:
{"test":"test"} type 'unicode'
相关源码
•Get方法
Get方法是wsgi里面的一个方法。
def GET(self):
# The WSGI spec says 'QUERY_STRING' may be absent.
raw_query_string = get_bytes_from_wsgi(self.environ, 'QUERY_STRING', '')
return http.QueryDict(raw_query_string, encoding=self._encoding)
最终返回的是一个http.QueryDict(raw_query_string, encoding=self._encoding)http的原始数据,而QueryDict继承于MultiValueDict ,所以我们直接看MultiValueDict就好了。
•MultiValueDict
其实源码看起来并不难。
def get(self, key, default=None):
"""
Returns the last data value for the passed key. If key doesn't exist
or value is an empty list, then default is returned.
"""
try:
val = self[key]
except KeyError:
return default
if val == []:
return default
return val
def getlist(self, key, default=None):
"""
Returns the list of values for the passed key. If key doesn't exist,
then a default value is returned.
"""
try:
return super(MultiValueDict, self).__getitem__(key)
except KeyError:
if default is None:
return []
return default
def __getitem__(self, key):
"""
Returns the last data value for this key, or [] if it's an empty list;
raises KeyError if not found.
"""
try:
list_ = super(MultiValueDict, self).__getitem__(key)
except KeyError:
raise MultiValueDictKeyError(repr(key))
try:
return list_[-1]
except IndexError:
return []
Django 怎样传数据给HTML页面的ajax
有三种方法:1,在模版中的html文件中嵌入含有这个函数的js文件或者直接加到html里面.2,在js中通过ajax访问打开一个链接,比如/admin/url?key=value,那么在admin.py中的url方法中这样keyvlaue=request.GET.get('key',None)来获取这个value
django视图中怎么把从前端获取的user作为全局变量
有时候,我们需要Templates模板页面可以使用一些变量。这些变量我们在views.py响应时没有返回设置的变量。例如,如下代码:
#coding:utf-8
from django.shortcuts import render
def index(request):
context = {}
context['title'] = '测试标题'
return render(request, 'index.html', context)
上面是某个views.py的方法之一。它将渲染index.html模版(Template)页面,并返回context字典。该字典是传入变量信息给前端页面。对应的index.html如下:
html
head/head
body
h3{{title}}/h3
p是否登录:{{request.user.is_authenticated}}/p
/body
/html
响应结果除了有title变量值之外,还有是否登录信息。该登录信息来自request变量,问题是上面views.py中返回结果的context中没有写入request变量。而模版也没却有可以获取该变量。
这个当时不是无中生有,我一步一步剖析给大家看。原理讲明白之后,就自然懂得如何设置模版(Templates)的全局变量或者叫默认变量。
render方法是render_to_response方法的简写方式。上面的views.py代码相当于如下:
#coding:utf-8
from django.shortcuts import render_to_response
from django.template import RequestContext
def index(request):
context = {}
context['title'] = '测试标题'
return render_to_response('index.html', context, RequestContext(request))
如果去掉render_to_response的第三个参数,即RequestContext(request)部分。
渲染index.html模版页面就无法得到{{request.user.is_authenticated}}的值,即没有传递request变量给前端页面。很明显RequestContext很关键。
有关RequestContext的内容可以从Django官方文档查得。
该类实例化时会解析settings中的Templates设置中的context_processors配置。新建Django项目settings.py文件中默认的Templates设置如下:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'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.template.context_processors.request的路径找到Django的相关源码。
Django安装在Python的安装目录下Lib/site-packages/目录中,找到django/template/context_processors.py文件,打开可看到request方法:
def request(request):
return {'request': request}
该方法返回一个字典,key为request,value为request对象。很明显,render中的request对象就是通过加载settings中的context_processors列表方法得到字典项。
我们也可以采用这种方法,给Django项目设置全局的模版变量。例如,我的Django名称为myproject,在myproject/myproject目录中创建一个contexts.py文件,代码如下:
#coding:utf-8
from django.conf import settings
# 得到语言设置
def lang(request):
return {'lang': settings.LANGUAGE_CODE}
该文件的方法需要request参数,最后需要返回一个字典即可。
再打开settings.py文件,在Templates中添加刚才写的方法引用:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
# 自定义模版全局变量(默认变量)
'myproject.contexts.lang',
],
},
},
]
添加模版全局变量之后,我们可以在任意位置渲染模版页面无需再手动写相关代码即可使用该变量。
django 传对象到前端 class类型怎么取
如果是django内置的模板引擎,
例如class A,实例a,a中的属性name,
则{{a}}为实例a, {{a.name}}为取name值
结语:以上就是首席CTO笔记为大家介绍的关于django如何把用户名传给前端的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。