Django 接受 GET 参数

标签 django url parameters

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

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

mysite.com/search/param_here

mysite.com/?search=param_here

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

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

最佳答案

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

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

它说要匹配来自

的所有内容
  • ^ 行首
  • $ 到行尾
  • 在行尾后面有一个名为标签的模式,由单词和数字组成

通常在一行结束后会出现另一行或 EOF 不内容(除非您使用多行正则表达式并且此处不需要这些)。

行尾应该在标签之后:

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

使用查询字符串

Query strings are not parsed by url reslover.

因此,如果您的网址格式为:

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

将匹配:

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

在这种情况下,您可以像这样访问 View 中的查询字符串:

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

没有查询字符串

mysite.com/search/param_here 

将匹配:

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

\w 匹配的所有内容(您应该更改它以满足您的需求)都将作为名为 query 的参数与索引 View 函数的请求一起传递。

两者

您可以使用两种 url 模式,如下所示:

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

在此示例中, View 将如下所示:

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

关于Django 接受 GET 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891441/

相关文章:

java - JSoup 内容与使用桌面 Web 浏览器时不同

javascript - 如何解析 URL 的 json 输出

Python将函数参数转为字符串

python - 如何在 django 中使用嵌套查找?

php - python 格式日期时间与 "st", "nd", "rd", "th"(英文序数后缀),如 PHP 的 "S"

css - 在 dev 中调用了来自 css Assets 的 404 错误

c - 传递 char[] 参数根本不起作用

Django - 具有多项选择字段的动态表单

django - 如何在 Django 中测试表单?

c - 将数组作为指针传递