Django接受GET参数

时间:2010-05-23 11:01:03

标签: django url parameters

错误可以在这里看到:http://djaffry.selfip.com:8080/

我希望索引页面接受参数,无论是

mysite.com/search/param_here

mysite.com/?search=param_here

我的网址模式中有这个,但我无法让它工作。有什么建议吗?

urlpatterns = patterns('',
        (r'^$/(?P<tag>\w+)', 'twingle.search.views.index'),
    )

1 个答案:

答案 0 :(得分:23)

首先,你在url模式中的正则表达式是错误的。

r'^$/(?P<tag>\w+)'

它表示匹配

中的所有内容
  • ^行的开头
  • $到行尾
  • 具有名为tag的模式,其由在行结束后的字和数字
  • 组成

通常在一行结束后出现另一行或EOF不满足(除非你使用多行正则表达式而你不需要这些行。)

行结尾应位于标记之后:

r'^/(?P<tag>\w+)$'

使用查询字符串

Query strings are not parsed by url reslover.

因此,如果你有格式的网址:

http://mysite.com/?query=param_here

将匹配:

(r'^$', 'twingle.search.views.index')

在这种情况下,您可以在视图中访问query字符串,如下所示:

request.GET.get('query', '')

没有查询字符串

mysite.com/search/param_here 

将匹配:

(r'^search/(?P<query>\w+)$', 'twingle.search.views.index'),

匹配\w的所有内容(您应将其更改为满足您的需求)将与索引视图函数的请求一起传递为名为query的参数。

<强>两个

您可以使用这两种网址模式:

urlpatterns = patterns('twingle.search.views',
   url(r'^$', 'index'),
   url(r'^search/(?P<query>\w+)$', 'index'),
)

在这个例子中,视图看起来像这样:

def index(request, query=None)
    if not query:
       query = request.GET.get('query', '')
    # do stuff with `query` string
相关问题