前端如何给django传参数(2023年最新整理)

导读:本篇文章首席CTO笔记来给大家介绍有关前端如何给django传参数的相关内容,希望对大家有所帮助,一起来看看吧。

django rest framework 获取前端参数的几种方式

这种是通过url传参 (params),那么应该使用:

request.query_params拿到的是QueryDict的类型,使用dict()方法转化为dict

request.data拿到的参数是QueryDict的类型,此处只讲获取,QueryDict类包含了很多方法,具体的可以参考:

request.data 拿到是Dict类型

request.data 拿到的也是QueryDict类型,获取方法可以参考 链接

注意:

此处都是基于继承 rest framework 中APIView的类重新封装的request来获取参数喔!

前端如何给django传参数(2023年最新整理)  第1张

django HttpResponseRedirect怎么传递参数

使用session传递:

这种方法的前提是你的框架启动了session,关于怎么启动session,这里贴一段1.6的官方文档的描述:

在跳转之前(HttpResponseRedirect之前),把需要传递的参数保存到request的某个session中,然后跳转到某个url(U),在该url(U)的view方法中,从request的session中,就可以得到传过来的参数。

django1.8和jinja2配合,url标签怎么传参数

可以使用url里面自带的name的方法。

对于像a这样链接的操作。 用法: 不带参数的: {% url \'name\' %} 带参数的:参数可以是变量名 {% url \'name\' 参数 %} 所以这里的改变为:url(\'^login_first/$\',views.login,name=\"login_first\")(对于其他部分自动补脑),在a href=\"{% url\'login_first\'%}\".

解释:{% url \'login_first\'%},这里的login_first代表着这个url自动去寻找django的url里面name=\"login_first\"这个条链接,并将前面的url赋给a标签中的href。

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

Django传数据给HTML页面的ajax的方法是通过load方法传入的。

举例:ajax.html

html

head

meta charset=\"utf-8\" /

titleajax test/title

script type=\"text/javascript\" src=\"\"/script

script type=\"text/javascript\"

jQuery(function($){

$(\'button\').click(function(){

$name = $(this).attr(\'name\');

$(\'#out\').empty().load(\'/ajax_deal/\',{ name : $name });

});

});

/script

style type=\"text/css\"/style

/head

body

button id=\"btn-1\" name=\"1\"1/button

button id=\"btn-2\" name=\"2\"2/button

button id=\"btn-3\" name=\"3\"3/button

div id=\"out\"/div

/body

/html

设置下路由:url(r\'^ajax_deal/$\',\'jobs.views.ajax_deal\'),创建名为jobs的app

/opt/django/webproject/jobs

处理函数:

def ajax_deal(request):

return HttpResponse(\"hello\")

django中怎么在一个网页向另一个网页传递参数

获取字典中某个key的值有2种方式:

print user.get(\'username\')11

print user[\'username\']11

他们到底有什么区别呢?

我来常识打印一个没有的key,比如

print user.get(\'kk\')11

打印结果为:None

print user[\'kk\']11

页面会报错

结语:以上就是首席CTO笔记为大家介绍的关于前端如何给django传参数的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论