django urls.py中的正则表达式问题

时间:2014-10-06 01:13:17

标签: python regex django web

我通过简单的服务器在本地为Django提供静态文件。我的urls.py中包含以下行:

    static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

(奖励指向任何能告诉我为什么这不会被网址解析器自动检查的人。我有django.contrib.staticfiles安装并将DEBUG设置为True)。

如果我们看一下static的实现,我们发现一个非常简单的函数:

if not settings.DEBUG or (prefix and '://' in prefix):
    return []
elif not prefix:
    raise ImproperlyConfigured("Empty static prefix not permitted")
return patterns('',
    url(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),
)

最后一行最终会添加到我的网址模式中。

当我运行Web服务器时,它没有正确地提供来自该STATIC_ROOT的文件。这是一个例子:

  1. 我在浏览器中输入以下内容:localhost:8000 / Users / nick / Documents / coding / sparestub / static_root / contact / js / contact.js

  2. 以下是服务器响应:

    Request Method: GET
    Request URL:        http://localhost:8000/Users/nick/Documents/coding/sparestub/static_root/contact/js/contact.js
    
    Using the URLconf defined in sparestub.urls, Django tried these URL patterns, in this order:
    ^$ [name='homepage']
    ^registration/
    ^Users\/nick\/Documents\/coding\/sparestub\/sparestub\/\.\.\/static_root\/(?P<path>.*)$
    
  3. 请注意,我们正在正确搜索STATIC_ROOT。如果我将url复制并粘贴到bash中,它会找到目录:

        Nick-MacBook-Pro:Documents nick$ cd /Users\/nick\/Documents\/coding\/sparestub\/sparestub\/\.\.\/static_root\/
        Nick-MacBook-Pro:static_root nick$ pwd
        /Users/nick/Documents/coding/sparestub/static_root
        Nick-MacBook-Pro:static_root nick$ cd /Users\/nick\/Documents\/coding\/sparestub\/sparestub\/\.\.\/static_root\/
        Nick-MacBook-Pro:static_root nick$ pwd
        /Users/nick/Documents/coding/sparestub/static_root
        Nick-MacBook-Pro:static_root nick$ cd contact/js
        Nick-MacBook-Pro:js nick$ ls
        contact.js
    

    请注意它包含/contact/js/contact.js !!

    在contact / js / contact.js看到匹配RE模式(?P. *),我希望这整个过程都能正常工作。任何人都可以提供一些指导吗?

0 个答案:

没有答案