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

Python Django:使用url进行查询(使用url分配变量),python,django,http,Python,Django,Http,我正在尝试为我的网站创建一个查询系统,我认为最好的方法和最简洁的方法是使用url模式分配搜索变量 例如,我想搜索modelUser的对象: 用户将HttpRequest发送到以下url: https://127.0.0.1/search/q=“管理员” 现在HttpRequest也被发送到searchview,我们不知何故得到了q变量数据 def search(request): for query in User.objects.all(): if q in quer

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

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


用户将HttpRequest发送到以下url:

https://127.0.0.1/search/q=“管理员”

现在HttpRequest也被发送到
search
view,我们不知何故得到了
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)
def搜索(请求):
对于User.objects.all()中的查询:
如果查询中的q:#<我们需要以某种方式获取“q”的数据。
返回HttpResponse(q)
由于我在
User.objects.all()
中有admin,因此应该返回HttpResponse'admin'



如何创建此url模式?因此,我可以从url分配
q
变量,然后将其发送到系统以查找它?

您可以从url捕获命名字符串,如下所示:

URL.py:

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

您可以从URL中捕获命名字符串,如下所示:

URL.py:

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

我对此URL有问题:

https://127.0.0.1/search/q="admin"
URL中没有
,因此没有查询字符串,它都是“路径”的一部分。在那里使用像
=
这样的字符会混淆很多东西,如果它真的有效的话

要么就这么做

https://127.0.0.1/search/admin
使用类似于
r'^search/(?p.+)$”
的URL模式,或

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

在这种情况下,查询字符串将位于
请求中。获取['q']
;还可以使用它来处理查询参数(例如,用于验证查询参数)。

我对此URL有问题:

https://127.0.0.1/search/q="admin"
URL中没有
,因此没有查询字符串,它都是“路径”的一部分。在其中使用
=
这样的字符会混淆很多东西,如果它真的有效的话

要么就这么做

https://127.0.0.1/search/admin
使用类似于
r'^search/(?p.+)$”
的URL模式,或

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

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

您可以使用查询参数,但为此,您的url应如下所示:
https://127.0.0.1/search/?q=admin
(注意问号)。然后,在您的视图中,您可以使用
request.GET[param]
访问所有查询参数(在您的示例中是
request.GET['q']
)。您可以阅读wiki文章以了解有关查询参数的更多信息。您已经看过这个问题了吗?关于如何在Django中处理GET参数的官方文档可以在这里找到:您可以使用查询参数,但为此,您的url应该如下所示:
https://127.0.0.1/search/?q=admin
(注意问号)。然后,在您的视图中,您可以使用
request.GET[param]
访问所有查询参数(在您的示例中是
request.GET['q']
)。您可以阅读wiki文章以了解有关查询参数的更多信息。您已经看过这个问题了吗?关于如何在Django中处理GET参数的官方文档可以在这里找到:我知道第一种方法,但没有发现它是好的设计,第二种方法是我所需要的。我知道第一种方法,但没有发现它是好的设计,第二种方法是我所需要的。