【问题标题】:Django url regex parameter capturingDjango url 正则表达式参数捕获
【发布时间】:2012-02-21 14:20:50
【问题描述】:

我想将以下 uri 路由到视图;

localhost:8000/?tag=Python

def index_tag_query(request, tag=None):

在我的 url conf 中,我尝试了以下正则表达式模式,但即使正则表达式看起来不错,似乎也没有捕获请求;

url(r'^\?tag=(?P<tag>\w+)/$', 'links.views.index_tag_query'),

url(r'^\/?\?tag=(?P<tag>\w+)/$', 'links.views.index_tag_query'),

url(r'^\/?\?tag=(?P<tag>.*)/$', 'links.views.index_tag_query'),

什么给了?

【问题讨论】:

    标签: python django


    【解决方案1】:

    您无法从您的 URLconf 解析 GET 参数。为了更好的解释,我可以给出,看看这个问题(第二个答案):Capturing url parameters in request.GET

    基本上,urlconf 解析 URL 并将其路由到视图,将任何 GET 参数传递给视图。您在视图本身中处理这些 GET 参数

    urls.py

    url(r^somepath/$', 'links.views.index_tag_query')
    

    views.py

    def index_tag_query(request):
        tag = request.GET.get('tag', None)
        if tag == "Python":
             ...
    

    【讨论】:

    • 酷。我最初尝试过这种方法,但觉得在 URL conf 中有更好的方法来实现它。我现在已将 URI 更改为 url(r'^tag/(?P<tag>.*)/$', 'links.views.index_tag_query', name='tag-search'),它非常有效,并且无需在视图函数中使用额外的条件。
    • 是的,这是最好的方法。我认为使用您的 URL 来构建查询集(即要抓取什么数据)和 GET 参数来调整它(如何返回它 - 排序、排除等)是个好主意
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2016-04-18
    • 2011-07-20
    • 2011-08-06
    • 2014-04-30
    • 2011-03-22
    • 2013-07-26
    • 2014-07-08
    相关资源
    最近更新 更多