在url中传递多个参数

时间:2016-09-25 19:30:26

标签: python django django-urls

我正在尝试创建一个与数据库交互的简单django应用程序。但是我在网址中传递了多个参数时遇到了麻烦。

要传递参数,我这样做:

127.0.0.1:8000/REST/insert/?n=test/?x=2/?y=2/?z=True

然后在我的 views.py 中,我得到参数:

name = request.GET.get('n', '')
x = request.GET.get('x', '')
y = request.GET.get('y', '')
z = request.GET.get('z', '')

显然,我做错了。我该如何解决?

3 个答案:

答案 0 :(得分:2)

查询参数之间的分隔符应为&个字符,而不是斜杠和问号(第一个除外)。

/?n=test/?x=2/?y=2/?z=True

应该是

/?n=test&x=2&y=2&z=True

注意:我不确定你应该在这里使用查询参数,因为你的网址中有“插入”。如果你真的想把东西插入数据库,那么至少应该通过post post请求作为post数据。

答案 1 :(得分:1)

你想做的事情并不安全。由于您执行了插入操作,因此请求类型应为POST,您应该将信息发送为json。

只需将数据写为json并将其放入请求的正文中。

在您看来;

import json
def your_view(request):
    body_unicode = request.body.decode('utf-8')
    data = json.loads(body_unicode) # This is a dictionary.

答案 2 :(得分:0)

首先必须编辑你的urls.py文件以接受你发送的参数, 它应该是,

url(r'^REST/insert/$', views.YourFuntion, name = 'your-fn'),

第二次用这样的//替换qustion标记和斜杠&

http://127.0.0.1:8000/REST/insert/?n=test&x=2&y=2&z=True