django 处理静态文件

django本身是不支持静态文件处理的,要在页面中引用js css图片flash等静态文件该怎么办 呢
有两中方法可以解决
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!

2010/09/02 10:39

ubuntu下搭建django的开发环境

其实在ubuntu下搭建django+apache的开发环境并没有想像的那么难,最开始我也是安装网上的教程 一步步的做。但是配置那是相当的麻烦。弃之

开始自己摸索安装配置

python 就不用装了,现在的liunx差不多都已经自带了

1 安装apache

   apt-get install apache2 (..更多内容)
2010/08/30 16:43

java实现对某目录下所有文件的监控

在网络上使用java来监控文件状态的文章 例子 太少了。就是有也只是走走过场而已。

今天我特意把这段代码从日志采集系统里面分离出来。供大家参阅,交流,学习。


思路大概是这样的: 通过一个线程 每隔一段时间给某个目录下的文件照个快照 也就是获取这些文件的绝对路径和最后修改的时间,比较前后两次的快照

如果第二次的快照中加入了一个文件,而第一次快照中没有 说明是此文件是新添加的 就触发添加事件,

如果两次的快照中都有这个文件 ,那么就比较次文件前后两次的时间戳,要是不同的话就说明此文件已经改动过了,触发修改事件

第一次的快照中有 而第二次的快照中没有,那么此文件被删掉了,触发文件删除事件 (..更多内容)
2010/08/27 13:56
Tags: java  文件监控   

评论也破1000了

今天是dengmin建博的第77天 也是本域名正式上线的第48天了,共写下博文65篇,除一篇转载的和一新闻外 全部属于原创。
收录情况:
google的收录是156 反向链接是8,有7来是来自taogogo同学 还有一条是来之Mucid同学
baidu的收录是0 反向链接是151 ,不知道为什么现在baidu的收录又变为0 了上次还是32 ,有知道的同学请告知一下。
yahoo的收录是93条,反向链接是1130,不知道为什么yahoo现在也停止收录了。
soso的是108 bing的是42 我很奇怪为什么soso也收录了,我没有向它提交url阿。

平均每天的流量是55ip,这写流量中有半数是来自google的搜索 最高的访问量是91IP,alexa的排名已经升到541941位了这让我很是欣慰。

到目前为此 评论也突破1000 了 但到底是多少 我也不知道,因为这是gae的一个限制,每次只能抓取1000条,即使你要查1200条数据,它也只返回1000条。
很是悲哀,gae 不支持count 查询 group by 查询 != 和> < 这些逻辑操作不能同时使用,可气的是 还不支持模糊查询和关键字查询
数据库查询最多是1000条,每天记录不能超过1M
如果使用了唯一键的查询 其他的键就不能排序
虽然支持memcache 切不支持文件操作。
我真搞不明白,google干的是搜索 为什么连几本的查询功能还有这么多弊端
让我这个google fans 很是痛心
种种限制 让我门这些写写小程序的民工放不开手脚。 要实现某个功能还的绕很大一弯。
想打算把micolog的程序改改 能让她脱离 gae平台,使用mysql或sqlite3来持久数据。这样就可以减少很多不必要的麻烦
但这也不能说干就干,比竟还要上班 要工作,这个只能作为业余的时间来鼓捣鼓捣了。有兴趣的同学和以和我一起来 瞎折腾

好像跑偏题了。i'm so sorroy!
继续。。。。

在以前看到这个破1000 那个破1000 了 很是羡慕,但是现在也迎来了1000条评论,虽然晚了点,但还是有点高兴的
在这历史性的时刻里,我首先要感谢xuming 开源了这么好的一个博客,让我接触了python这门强大的语言
要感谢在我老婆对我写博客的支持
要感谢各位在本博上辛勤灌水的同学门,没有你们的评论就没有现在的1000评论,没有我搞博客的信心
再次感谢!
在dengmin这里留下评论前10名分别是
留年 42条
等待思索 41条
taogogo 38 条
lambert 33条
Mucid 31条
云在天边 25条
人好哇 25条
solo 22条
7cbt 19条
小付17条
以上这些 同学都是本站的常客,虽然有很多同学没有提到 但是也要感谢你们,是你们让我有决心把博客写下去的。
虽然近来工作时间又紧了点,没有什么时间去拜访各位,敬请见凉。 但是 我友链里的同学是每天必访的,这个各为毋须质疑。
最后 还是
谢谢!3e04486c

2010/08/26 13:40
Tags: 祝贺  评论  1000大关 

java中long,int,short与byte数组之间的转换

  //long类型转成byte数组
  public static byte[] longToByte(long number) {
        long temp = number;
        byte[] b = new byte[8];
        for (int i = 0; i < b.length; i++) {
            b[i] = new Long(temp & 0xff).byteValue();// 将最低位保存在最低位
            temp = temp >> 8; // 向右移8位
        }
        return b;
    }
   
    //byte数组转成long
    public static long byteToLong(byte[] b) {
        long s = 0;
        long s0 = b[0] & 0xff;// 最低位
        long s1 = b[1] & 0xff;
        long s2 = b[2] & 0xff;
        long s3 = b[3] & 0xff;
        long s4 = b[4] & 0xff;// 最低位
        long s5 = b[5] & 0xff;
        long s6 = b[6] & 0xff;
        long s7 = b[7] & 0xff;

        // s0不变
        s1 <<= 8;
        s2 <<= 16;
        s3 <<= 24;
        s4 <<= 8 * 4;
        s5 <<= 8 * 5;
        s6 <<= 8 * 6;
        s7 <<= 8 * 7;
        s = s0 | s1 | s2 | s3 | s4 | s5 | s6 | s7;
        return s;
    }

/**
     * 注释:int到字节数组的转换!
     *
     * @param number
     * @return
     */
    public static byte[] intToByte(int number) {
        int temp = number;
        byte[] b = new byte[4];
        for (int i = 0; i < b.length; i++) {
            b[i] = new Integer(temp & 0xff).byteValue();// 将最低位保存在最低位
            temp = temp >> 8; // 向右移8位
        }
        return b;
    }

    /**
     * 注释:字节数组到int的转换!
     *
     * @param b
     * @return
     */
    public static int byteToInt(byte[] b) {
        int s = 0;
        int s0 = b[0] & 0xff;// 最低位
        int s1 = b[1] & 0xff;
        int s2 = b[2] & 0xff;
        int s3 = b[3] & 0xff;
        s3 <<= 24;
        s2 <<= 16;
        s1 <<= 8;
        s = s0 | s1 | s2 | s3;
        return s;
    }

    /**
     * 注释:short到字节数组的转换!
     *
     * @param s
     * @return
     */
    public static byte[] shortToByte(short number) {
        int temp = number;
        byte[] b = new byte[2];
        for (int i = 0; i < b.length; i++) {
            b[i] = new Integer(temp & 0xff).byteValue();// 将最低位保存在最低位
            temp = temp >> 8; // 向右移8位
        }
        return b;
    }

    /**
     * 注释:字节数组到short的转换!
     *
     * @param b
     * @return
     */
    public static short byteToShort(byte[] b) {
        short s = 0;
        short s0 = (short) (b[0] & 0xff);// 最低位
        short s1 = (short) (b[1] & 0xff);
        s1 <<= 8;
        s = (short) (s0 | s1);
        return s;
    }

2010/08/25 12:06

ubuntu9.04升级到10.04LTS

ubuntu发行版的升级以前也升级过,不过出了写问题,升级之后我重启 就死机了,开机 到输入用户名密码的那快 也死机。 可是用字符界面却可以登录
在字符界面我查了一下 发现是内核的问题,ubuntu没个版本所带的内核都不相同,10.04好像是kernel 2.6.33的吧 uname -a 了一下
当前的kernel 还是2.6.18 这个版本还是9.04的 在升级的时候它没有把内核一块给我升级。当时也想下一个kernel 重新编译安装,可是这个编译过程也是很耗时的
这么长的时间 我重装的时间都有了。 没办法 只好重装 谁叫咋菜呢。

今天把ubuntu 来了次升级 这次不会担心我内核的问题 因为我现在使用的内核是2.6.35,今天看了下linux内核的官网 发现已经到2.6.36-rc2了 稳定的还是2.6.35.2版本 下次找个时间在把内核升级一次。 没办法 这是我的一毛病 什么软件只要更新了版本我就立马也更着更新 (..更多内容)
2010/08/23 17:09
1 2 3 4 5 » Last » Page 1 of 12