Django URL 配置用于 JavaScript 文件
大家好,我在设置Django的urls文件时遇到了一些问题!
<script type="text/javascript" src="/javascript/HashMap.js"></script>
问题是,系统试图找到这个文件:http://localhost/javascript/HashMap.js,但是这个网址在我的URL配置中没有匹配到,所以GET请求失败了。
有没有人能帮我找到正确的代码行,让这个功能可以正常工作!
谢谢
安迪
3 个回答
如果你想要获取一个静态文件,问题很可能出在你的 MEDIA_ROOT 和 MEDIA_URL 设置上。你需要检查一下这两个设置是否指向了你存放 JavaScript 文件的地方,并且你的 MEDIA_URL 应该有一个后缀,以确保你访问的是一个“特殊”的目录,里面存放着媒体文件。
如果你想对这个文件进行一些处理,比如在运行时生成它等等,可以试试这个正则表达式:
r'^javascript/(?P<jsfile>.+\.js)$'
在你的视图声明中,不仅仅是获取请求作为参数,你还会有一个新的参数叫 jsfile,这就是你请求的文件名。所以在视图中,进行处理后,返回一个 HttpResponse 对象,里面包含处理后的文件内容。
Javascript 通常被认为是一种静态资源文件。如果在你的情况下也是这样的话,我建议你查看一下 Django 的文档。如果你确实需要使用 urlconf 来指向一个生成 Javascript 的视图,那么你需要在你的 URLconf 中添加一个条目,并将其指向一个视图。
你需要把你的JavaScript当作静态文件来提供。
在生产环境中,具体怎么做取决于你使用的Web服务器。Django通常不直接提供静态文件。
举个例子,如果你用的是Apache服务器,你需要在Apache的配置文件里加上这些内容:
Alias /javascript/ /usr/local/wsgi/static/javascript/
然后你就可以把你的.js文件放到配置中提到的那个目录里。
Django的文档里专门有一整页讲这个话题(提供静态文件):http://docs.djangoproject.com/en/dev/howto/static-files/