【发布时间】:2011-11-15 15:27:17
【问题描述】:
# urls.py
site_media = os.path.join(os.path.dirname(__file__), 'site_media'
)
urlpatterns = patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': site_media}),
)
我无法理解上述语句中使用的表达的含义。
'^site_media/(?P<path>.*)$'
这到底是什么意思?
谢谢
// ========== 根据 cmets 更新 ===============
参考:Name Groups。
在 Python 正则表达式中,命名正则表达式的语法
groups 是 (?P<name>pattern),其中 name 是组的名称,并且
pattern 是一些要匹配的模式。
比较:
方法一>
(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'news.views.month_archive'),
对/articles/2005/03/ 的请求将调用该函数
news.views.month_archive(request, year='2005', month='03'),
方法二>
(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
对/articles/2005/03/ 的请求将调用该函数
news.views.month_archive(request, '2005', '03').
【问题讨论】:
-
你有机会完成本教程吗?
-
另外,你懂正则表达式吗?如果没有,现在是了解它们的时候了。 regular-expressions.info
-
@Jordan,我知道 RE,但我有问题要理解
(?P<path>.*)。 -
哦,
?P只是表示“一个命名的 RE 组即将出现”,<path>表示该组的名称是path。所以在模式匹配之后,.*部分在 kwargs 中可用,名称为path。