Django接受GET参数

tip*_*ipu 3 django parameters url

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

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

mysite.com/search/param_here
Run Code Online (Sandbox Code Playgroud)

要么

mysite.com/?search=param_here
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_*cic 23

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

r'^$/(?P<tag>\w+)'
Run Code Online (Sandbox Code Playgroud)

它说匹配来自的一切

  • ^行的开头
  • $到行尾
  • 具有名称标签的模式,其由行结束后的单词和数字组成

通常在一行结束后,另一行或EOF不是内容(除非你使用多行正则表达式,你不需要这些).

行尾应该在标记之后:

r'^/(?P<tag>\w+)$'
Run Code Online (Sandbox Code Playgroud)

使用查询字符串

url reslover不解析查询字符串.

因此,如果您的格式为url:

http://mysite.com/?query=param_here
Run Code Online (Sandbox Code Playgroud)

将匹配:

(r'^$', 'twingle.search.views.index')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以query像这样访问视图中的字符串:

request.GET.get('query', '')
Run Code Online (Sandbox Code Playgroud)

没有查询字符串

mysite.com/search/param_here 
Run Code Online (Sandbox Code Playgroud)

将匹配:

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

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

你可以像这样使用两个url模式:

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

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

def index(request, query=None)
    if not query:
       query = request.GET.get('query', '')
    # do stuff with `query` string
Run Code Online (Sandbox Code Playgroud)