Django:使用url进行查询(使用url分配变量)

时间:2016-11-07 12:16:25

标签: python django http

我正在尝试为我的网站创建一个查询系统,我认为最好的方法和最紧凑的方法是使用url模式分配搜索变量。

例如,我想搜索模型User的对象:

用户将HttpRequest发送到以下网址:

https://127.0.0.1/search/q="admin"

现在HttpRequest也被发送到search视图,我们以某种方式得到q可变数据。

def search(request):
    for query in User.objects.all():
        if q in query: # < We somehow need to get data of 'q'.
           return HttpResponse(q)

由于我有User.objects.all()的管理员,这应该返回'admin'的HttpResponse。

如何制作这个网址模式?所以我可以从网址分配q变量,然后将其发送到系统找到它?

2 个答案:

答案 0 :(得分:1)

您可以从以下网址捕获命名字符串:

urls.py:

urlpatterns = [
    url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]

views.py:

def page(request, num="1"):

答案 1 :(得分:1)

我的网址存在问题:

https://127.0.0.1/search/q="admin"

网址中没有?,因此没有查询字符串,它都是“路径”的一部分。使用="等字符会使很多事情混淆,如果它完全有用的话。

要么只做

https://127.0.0.1/search/admin

使用类似r'^search/(?P<querystring>.+)$'

的网址格式
https://127.0.0.1/search/?q=admin

在这种情况下,查询字符串将位于request.GET['q'];也可以使用Django forms来处理查询参数(例如,用于验证它们)。