Django和查询字符串参数

16 浏览
0 Comments

Django和查询字符串参数

假设我有一个名为'get_item'的视图,我该如何为以下php风格的URL编写URL模式?

http://example.com/get_item/?id=2&type=foo&color=bar

(我不使用标准的“友好”类型的URL,即http://example.com/get_item/2/foo/bar,因为它不实用)

具体来说,当用户在浏览器中输入上述内容时,我如何使视图做出响应,并如何收集参数并在我的视图中使用它?

我试图至少正确获取id部分,但未成功。当我在浏览器中输入http://example.com/get_item?id=2时,视图不会运行。

我的URL模式:

(r'^get_item/id(?P\d+)$', get_item)

我的视图:

def get_item(request):
    id = request.GET.get('id', None)
    xxxxxx

简言之,我如何在Django中实现类似于Php的URL模式和查询字符串参数?

0
0 Comments

在Django中,URL模式匹配用于实际路径而不是查询字符串。因此,当我们想通过查询字符串参数来访问视图时,可能会出现问题。

解决方法是将URL模式更改为只匹配实际路径,而不包括查询字符串参数。假设我们的视图函数名为get_item,我们只需将URL模式更改为如下所示:

(r'^get_item/$', get_item)

通过这样的更改,我们可以成功访问带有查询字符串参数的视图函数。现在,我们可以在浏览器中使用类似以下的URL来访问视图函数:

http://example.com/get_item/?param1=value1&param2=value2

这样,我们就能够成功地使用查询字符串参数来调用视图函数了。

0
0 Comments

在Django中,处理查询字符串参数是一个常见的需求。查询字符串参数是URL中的一部分,用于传递额外的信息给服务器。下面我们来看一下在Django中处理查询字符串参数的原因和解决方法。

在Django中,处理查询字符串参数非常简单。我们只需要在URL模式中定义一个基本的URL,并在视图函数中使用`request.GET.get()`方法来获取参数的值。举个例子,我们可以将URL模式定义为`r'^get_item/$'`,并在视图函数`get_item()`中使用以下代码来获取参数的值:

def get_item(request):
    id = int(request.GET.get('id'))
    type = request.GET.get('type', 'default')

在上面的代码中,我们通过`request.GET.get()`方法来获取'id'和'type'参数的值。如果参数不存在,我们可以通过第二个参数来设置一个默认值。

Django会自动处理查询字符串,并将其中的参数/值对传递给视图函数。不需要进行任何额外的配置。URL模式只需指定基本的URL,查询字符串是隐式的。

然而,按照Django的惯例,我们应该将'id'和'slug'等参数放在基本URL中,而不是查询字符串中。查询参数可以用于过滤列表视图、确定当前页面等等。

总结一下,在Django中处理查询字符串参数的原因和解决方法如下:

- 原因:查询字符串参数是URL中的一部分,用于传递额外的信息给服务器。

- 解决方法:在URL模式中定义基本的URL,使用`request.GET.get()`方法在视图中获取参数的值。

希望这篇文章对你理解在Django中处理查询字符串参数有所帮助。如果你使用的是Django 2或3版本,可以按照上述方法进行操作。

0