我正在尝试为我的网站创建一个查询系统,我认为最好的方法和最紧凑的方法是使用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
变量,然后将其发送到系统找到它?
答案 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来处理查询参数(例如,用于验证它们)。