簡體   English   中英

Django URL,不同的正則表達式?

[英]Django urls, different regex?

我的urlconf:

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&_=1386460596799 : http://127.0.0.1:8000/ajax/status/jsonp/1?callback=jQuery110208076630807481706_1386460596798&_=1386460596799 : http://127.0.0.1:8000/ajax/status/jsonp/1?callback=jQuery110208076630807481706_1386460596798&_=1386460596799 _= http://127.0.0.1:8000/ajax/status/jsonp/1?callback=jQuery110208076630807481706_1386460596798&_=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'}

Google好奇了幾個小時,發現Django與python中的url不一致。 任何想法如何不起作用,並且回調始終為None?

僅URL的路徑部分與urlpattern匹配。 查詢字符串可通過request.GET查看request.GET

在Django url-config中,無需匹配url中的查詢字符串。 您可以查詢查詢字符串數據,例如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'),
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM