django 处理静态文件
有两中方法可以解决
1 使用django.views.static.serve() 这个视图来处理静态文件
2 把处理静态文件的工作交给apache 或你选择的服务器
看第一种 django.views.static.serve() 方法的定义
def serve(request, path, document_root, show_indexes=False)
我把project中使用到的css js jpg png txt等文件全部放在project下的medias目录下
要在页面中能够引用到 要做如下的配置
在setttings.py中加入
import os.path
HERE = os.path.dirname(os.path.abspath(__file__))
STATIC_PATH=os.path.join(HERE, 'medias').replace('\\','/')
在urls.py中的配置
先导入 from django.conf import settings
接着在urlpatterns 中加上
(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_PATH}),
配置就是这些
最后在html页面中就可以这样用了
<link rel="stylesheet" type="text/css" href="/static/sdmenu/sdmenu.css" />
<script type="text/javascript" src="/static/sdmenu/sdmenu.js">
注意 红色字体的部分
这种方法不推荐使用 看django的文档说明
Using this method is inefficient and insecure. Do not use this in a production setting. Use this only for development.
效率低 不安全
看第二种方法 使用服务器来处理静态文件
编辑 /etc/apache2/httpd.conf 配置
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE youflog.settings
PythonPath "['/usr/www'] + sys.path"
</Location>
Alias /media /usr/www/youflog/medias
Alias /robots.txt /usr/www/youflog/medias/robots.txt
<Location "/media/">
SetHandler None
</Location>
<LocationMatch "(?i)\.(jpg|gif|png|txt|ico|css|js)$">
SetHandler None
</LocationMatch>
Alias /media /usr/www/youflog/medias
添加一个url访问别名在 html中就可以使用/media在引用次目录下的文件
<LocationMatch "(?i)\.(jpg|gif|png|txt|ico|css|js)$">
这是配置 支持的文件类型
在html 中 的使用
<link rel="stylesheet" type="text/css" href="/media/sdmenu/sdmenu.css" />
<script type="text/javascript" src="/media/sdmenu/sdmenu.js">
enjoy it!

Recent Comments