^site_media/(?P<path>.*)$' 的含义是什么?

2 投票
2 回答
4585 浏览
提问于 2025-04-17 06:22
# 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>.*)$'

这到底是什么意思呢?

谢谢你

// ========== 根据评论更新的内容 ==============

参考资料:命名组

在Python的正则表达式中,命名正则表达式组的语法是 (?P<name>pattern),其中name是组的名称,而pattern是要匹配的某种模式。

对比:

方法 1>

(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')

方法 2>

(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),

请求 /articles/2005/03/ 会调用这个函数:

news.views.month_archive(request, '2005', '03')

2 个回答

2

(?P<path>.*) 是一个命名组。简单来说,这个表达式的意思是把匹配到的内容放到一个叫做“path”的盒子里。你可以在这里找到更多信息:http://docs.python.org/library/re.html

3

关于网址(urls)的内容在官方文档中讲得很清楚。

撰写回答