关于Django 1.4中的static资源目录存放问题

lojunren 发布于 2012/05/22 14:36
阅读 2K+
收藏 1

@岭南六少 你好,想跟你请教个问题:

       我是一个初次使用Django的新手,目前的Django版本为1.4。在查阅其发行说明的时候,改版本的项目路径存放布局较之前版本做出了变更。

        比如我在F盘下面新建了一myweb的项目,在myweb目录下面还有一个与其同名的目录myweb,manage.py被置于根目录下(即外层myweb下),而settings.py,urls.py,__init__.py被放置在了内层myweb目录下(详情参见Django1.4 Release Note)

                        https://docs.djangoproject.com/en/dev/releases/1.4/

       我想问的是,这样一来,我的static文件夹是应该放置在项目根目录下(外层myweb),还是放置在内层myweb文件夹中?

       如果是放置在外层myweb中

       那么您分享的代码:http://www.oschina.net/code/snippet_77175_5422中的 

        STATIC_ROOT = os.path.join(HERE, 'static').replace('\\','/')

       在django1.4项目中就没法获得正确的static目录位置。因为在您分享的代码中,HERE存放的是外层myweb(项目根)路径(f:/myweb)

       而在Django1.4中,settings.py是放置在内层myweb中,这样一来HERE存放的是内层myweb路径。(f:/myweb/myweb))

       由此也给身为小白的我带来了困惑。

       如果将static放在内层myweb中,似乎不甚合理

       如果将static放在外层myweb中,我尝试对您分享的代码中的

        HERE = os.path.dirname(os.path.abspath(__file__))

        做出如下修改

         HERE = os.path.abspath('..') #获取内层myweb的上一级路径,即项目根路径

        但是运行项目,http://127.0.0.1:8000/static/js/jquery.js 无法找到找到static中存放的资源

        在stackoverflow有一个跟我类似的问题

        http://stackoverflow.com/questions/10168761/static-folders-structure-in-django-1-4

        但是就下面的回答(也许是本人英文水平太烂)没有解开我的疑问

万望大神解惑!

加载中
1
黄金乞丐
黄金乞丐

我觉得应该将static放在外层myweb中, 把每个app上传的静态文件分目录存放在这个static文件夹中, 然后可以在每个app中添加和配置urls.py, 把静态文件目录映射到static/app1下,至少我现在是这样做的。至于上线部署, 我的项目还没有到这一步,所以给不出建议了。

我的这种做法主要用于处理用户上传的文件。对于CSS,JS等静态文件的访问,是在MEDIA_URL里配置的。

总之,django处理静态文件是很麻烦的。

lojunren
lojunren
非常感谢!你也是Django爱好者么?
1
岭南六少
岭南六少

认真研究了下django1.4发觉如果不是开发通用的app,实际项目中static放在根目录比较合理

可以参看https://github.com/vicalloy/timeline-site这个项目开发django项目

喜欢django的可以去看下天地一沙鸥的博客http://haoluobo.com

 

lojunren
lojunren
都过去这么长时间了,没想到您还惦记着这个问题,github上的Django项目目前正在研究,感谢六少提供这么有用的信息
0
岭南六少
岭南六少

django1.4我没有深入了解过所以暂时无法给你一个满意的答复

不过个人感觉还是在每个app下面放static的好,方便app重用

至于生产环境部署时,可以使用python manage.py collectstatic整合static

其他的只能靠你自己去摸索啦

我这段时间暂时没有空余时间去看django了

工作用PHP 么办法

lojunren
lojunren
感谢大神回复
0
Fengjian35
Fengjian35
我用过Django1.4创建项目,但是我是将内层的同名的文件删掉,拷贝出里面的setting.py 等文件,放到根目录下,然后修改setting 里的配置,至于static 的文件还是建立在根目录下。
lojunren
lojunren
@Fengjian35 恩恩,共勉共勉
Fengjian35
Fengjian35
回复 @ro : 是的,我也是刚刚才接触python和Django ,目前也是在摸索阶段,大家一起学习吧。
lojunren
lojunren
敢问兄弟也是Django爱好者么?
lojunren
lojunren
感谢您的回复
0
slider
slider
豆瓣上有个文章写的不错,搜一下吧 
lojunren
lojunren
非常感谢
返回顶部
顶部