2011-03-01 72 views
1

嘿家伙 - 我无法正确设置我的Django的URL文件的下列事情!Django URL配置为javascript文件

<script type="text/javascript" src="/javascript/HashMap.js"></script> 

会发生什么是文件试图得到发现:http://localhost/javascript/HashMap.js但这个网址不会在URL配置中的任何匹配,因此GET请求失败。

任何人都可以帮助我找到正确的线添加,以允许这种事情的工作!

干杯

安迪

回答

3

您需要将JavaScript作为静态文件提供。

如何在生产中执行此操作取决于您正在运行的Web服务器。 Django通常不会提供静态文件。

例如,对于Apache的,你把这个在你的Apache配置:

Alias /javascript/ /usr/local/wsgi/static/javascript/ 

然后你就可以把你的.js文件中引用的目录。

Django文档有一个整个页面只是这个话题(静态文件服务):http://docs.djangoproject.com/en/dev/howto/static-files/

+0

啊哈 - 我明白了 - 我认为这将会发生。然后Django可以为静态文件提供服务 - 但是它的糟糕做法......任何特别的原因都是它的不好的做法。必须做一个别名的Apache配置和文件到处看起来像一个糟糕的解决方案。 – RenegadeAndy 2011-03-01 01:32:37

+0

它只是没有为此设计(静态文件有效地服务)。开发很好,但不推荐在生产中使用。 – payne 2011-03-01 01:36:39

1

的JavaScript通常被认为是一种静态的资源文件。如果您的情况确实如此,我会将您引荐至Django documentation。如果你真的需要使用urlconf来指向一个生成Javascript的视图,那么你需要在你的URLconf中输入一个条目并将它指向一个视图。

0

如果你想只得到该文件为静态内容,这个问题将在一定MEDIA_ROOT你和MEDIA_URL设置变量。只需检查它们是指向JavaScript文件的位置,并且您的MEDIA_URL应该有一个后缀,以确保您访问存储媒体文件的“特殊”目录。

在你试图在文件上做一些处理的情况下,在运行时生成它,等 与此正则表达式尝试:

r'^javascript/(?P<jsfile>.+\.js)$' 

在你看来声明,而不是只得到了请求作为参数,你将有请求和一个叫做jsfile的新参数,这就是你要求的文件名。因此,在视图中,执行处理并返回一个带有处理文件内容的HttpResponse对象。