对于我的生活,我不能让Django找到我的JavaScript文件!我正在尝试将自定义小部件插入管理页面,如下所示:
class MarkItUpWidget(forms.Textarea):
class Media:
js = (
'js/jquery.js',
'js/markitup/jquery.markitup.js',
'js/markitup/sets/markdown/set.js',
'js/markitup.init.js',
)
css = {
'screen': (
'js/markitup/skins/simple/style.css',
'js/markitup/sets/markdown/style.css',
)
}
但是,当我的管理页面上插入此代码时,所有链接都被破坏,我无法访问任何JavaScript文件。我的设置文件如下所示:http://pastebin.com/qFVqUXyG
我做错了吗?我对Django有点新鲜。
答案 0 :(得分:3)
我猜您正在使用django-admin runserver
来测试您的网站。在这种情况下,请查看“How to serve static files”(但不要忽略the big fat disclaimer)。
准备好部署后,this chapter包含所有信息(前提是你选择Apache / mod_wsgi的标准路径)
答案 1 :(得分:0)
我不知道包含js文件的“django方式”是什么,但我只是在模板中使用了一个简单的常规include,它很棒,因为你可以动态生成这些的位置/文件名..哦,如果您正在使用django的测试服务器我不知道如何让它识别这些或者它是否可以,但您只需要在本地计算机上运行apache服务器然后将文件放在localhost目录中,您可以包含他们通过在模板中包含他们的完整路径(即http://localhost/myfiledirectory/myfile.js)来通过localhost,我也做的是使用amazon s3来托管文件,因为你在那里得到了一个url(不是你问过这个但是如果你没有在本地运行apache,它可以快速托管文件。
基本上,我对Django的理解是,它与PHP框架的工作方式不同,例如,因为Django的文件不在Web路径中(或者至少不需要)(即它们不是需要通过主机路径访问,但可以在机器上的任何地方访问)这对于提供额外的安全性等是有好处的,但这也意味着,为文件提供下载它们的URL,它们需要在Web托管路径中,其他可能知道如何使django直接执行此操作,但是如果你想要的话,那么将它们放在localhost路径上的快速而脏的方法将会起作用。