Django 找不到我的非 Python 文件!

1 投票
2 回答
505 浏览
提问于 2025-04-16 03:19

我真的是搞不懂,为什么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还不是很熟悉。

2 个回答

3

我猜你是在用 django-admin runserver 来测试你的网站。如果是这样的话,可以看看这个链接:“如何提供静态文件”(不过别忘了看看那个重要的警告)。

一旦你准备好上线了,这一章里有所有的信息(前提是你选择了标准的 Apache/mod_wsgi 部署方式)。

0

我不知道“django方式”是怎样包含js文件的,但我通常在模板里用简单的包含方法,这样很好,因为你可以动态生成文件的位置和名称。哦,如果你在用django的测试服务器,我不太清楚怎么让它识别这些文件,或者它是否能识别。不过,你只需要在本地机器上运行一个apache服务器,然后把文件放在localhost目录里,就可以通过localhost来包含它们,只需在模板里写上它们的完整路径(比如,http://localhost/myfiledirectory/myfile.js)。另外,我还会用亚马逊的s3来托管文件,这样你就能得到一个网址(虽然你没问这个,但如果你本地没有apache,这也是个快速托管文件的方法)。

基本上,我对Django的理解是,它和PHP框架工作方式不同。Django的文件不需要放在网络路径下(也就是说,它们不需要通过主机路径访问,可以放在机器的任何地方)。这样做有助于提供额外的安全性等等,但这也意味着,如果你想给文件一个下载的链接,它们需要放在网络托管路径下。其他人可能知道怎么让django直接做到这一点,但我这种简单粗暴的方法,把文件放在localhost路径下,如果你只想这样做的话,也是可以的。

撰写回答