【问题标题】:Django urls, different regex?Django url,不同的正则表达式?
【发布时间】:2013-12-08 18:26:41
【问题描述】:

我的网址配置:

urlpatterns = patterns('',
    url(r'^$', 'ping.views.services', name='services'),
    url(r'^ajax/status/(?P<id>[-\d]+)', 'ping.views.ajx_status', name='ajx_status'),
    url(r'^ajax/status/(?P<type>[-\w]+)/(?P<id>[-\d]+)(?:\?callback=(?P<callback>[-\w]+)&[_=0-9]+)?$', 'ping.views.ajx_status', name='ajx_status'),
)

链接是:http://127.0.0.1:8000/ajax/status/jsonp/1?callback=jQuery110208076630807481706_1386460596798&amp;_=1386460596799

输出:

def ajx_status(request, id, type,callback):
    print id,type,callback

日志:

1 jsonp None
/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py:903: RuntimeWarning: DateTimeField Ping.timestamp received a naive datetime (2013-12-08 18:12:33.831348) while time zone support is active.
  RuntimeWarning)

[08/Dec/2013 18:12:34] "GET /ajax/status/jsonp/1?callback=jQuery110208076630807481706_1386460596798&_=1386460596799 HTTP/1.1" 200 433

“原始”python 中的文本,有效:

import re

regex = re.compile(r"^/ajax/status/(?P<type>[-\w]+)/(?P<id>[-\d]+)(?:\?callback=(?P<callback>[-\w]+)&[_=0-9]+)?")

r = regex.search("/ajax/status/jsonp/1?callback=jQuery110208076630807481706_1386460596798&_=1386460596799")

r.groupdict()

{'callback': 'jQuery110208076630807481706_1386460596798', 'type': 'jsonp', 'id': '1'}

谷歌搜索了几个小时关于这个奇怪的问题,Django 与在 python 中的匹配方式不同。任何想法它如何不起作用并且回调总是无?

【问题讨论】:

    标签: python regex django url


    【解决方案1】:

    只有 URL 的路径部分与 urlpattern 匹配。通过request.GET 可以在视图中找到查询字符串

    【讨论】:

      【解决方案2】:

      在 Django url-config 中,不需要匹配 url 中的 Query String。可以查询request.GET.get('query_string_key')等查询字符串数据。

      例如:

      request.GET.get("page")
      

      urls.py你可以写如下:

      urlpatterns = patterns('',
          url(r'^ajax/status/(?P<type>[-\w]+)/(?P<id>[-\d]+)/$', 'ping.views.ajx_status', name='ajx_status'),
      )
      

      【讨论】:

        猜你喜欢
        • 2011-03-22
        • 2013-07-26
        • 2014-07-08
        • 1970-01-01
        • 2011-08-17
        • 2017-09-12
        • 1970-01-01
        相关资源
        最近更新 更多