月度归档: 2007 年 4 月

  • 用Apache快速架设Django应用

    Python,装django (解压到Python安装目录,从cmd窗口进入django目录,输入python setup.py install),也可以再去下svn升级,详情http://www.djangoproject.com

    Apache版本:apache_2.2.4-win32-x86-no_ssl.msi       下载地址:http://httpd.apache.org/

    ModPython:mod_python-3.3.1.win32-py2.5-Apache2.2.exe     下载地址:http://www.apache.org/dist/httpd/modpython/win

    依次安装上面两个东西,全部默认设置即可。

    对于Apache,可安装到磁盘下较近的一个路径,如:c:\apache 以便日后修改配置时方便打开。

    对于ModPython,它将使Apache支持django的运行,安装将近尾声时会提示选择Apache的安装目录,目的是为您配置httpd.conf,如果选错了也没有关系,可以在下面的配置中手动操作。

    以下段落将参考(http://www.cnblogs.com/zhengyun_ustc/archive/2006/11/20/django_apache_win32.html   http://thinkhole.org/wp/2006/04/03/django-on-windows-howto/)完成。

    为了方便说明,用我的一个问卷调查为例:下载  

    先说明一下两个命名:

    wenjuan: my project        (django-admin.py statrproject wenjuan)

    inves: a app in my project      (wenjuan/django-admin.py startapp inves)

    models.py 里面Subject是问卷主题(first是第一题的题号),Question是问题(number是手动设的题号,为了根据选项跳转方便),Answer是选项(next是选了这个选项后跳到下一题的题号)

    为了和参考的那篇接近,可以将例程下载放在c:\django\下,这样就如 c:\django\wenjuan\inves

    第一步我们来改一下wenjuan中的settings.py,首先配置好

    DATABASE_ENGINE = ‘mysql’

    DATABASE_NAME = ‘yourdatebase’

    DATABASE_USER = ”

    DATABASE_PASSWORD = ”

    DATABASE_HOST = ”

    DATABASE_PORT = ”

    然后manage.py syncdb(也可以先用manage.py sqlall inves来看一下表的结构),

    此后可用manage.py runserver打开调试服务器,进入:http://127.0.0.1:8000/admin/     去填一些测试数据。然后访问:http://127.0.0.1:8000/1/      (其中1是问卷的id)

    现在回到正题,接着为了部署继续修改settings.py主要改动是把原来开发过程中用的相对路径改成绝对路径。

    主要有:

    MEDIA_ROOT = ‘c:/django/wenjuan’

    STATIC_PATH = ‘c:/django/wenjuan/media’

    TEMPLATE_DIRS = (

            ‘c:/django/wenjuan/templates’,

    )

    请注意斜杠的方向。

    接下来可以去修改Apache的配置文件httpd.conf了。它应该在Apache安装目录的con里面找到。

    配置可能涉及到的参数主要有:

    Listen      (监听的端口号,前面也可以附上IP,默认就设成80吧)

    ServerName      (访问的入口,仍然是IP+端口,比如162.168.1.10:80或者是其他的)

    DocumentRoot     (Apache服务器的根,我把它设为"c:/django/")

    然后就是需要添加的配置了:

    首先检查LoadModule python_module modules/mod_python.so

    如果没有就加上,位置挨着长得像的就行了

    然后添加:(建议在配置文件最后,日后好找)

    <Location "/">

        SetHandler python-program

        PythonPath "sys.path+[‘c:/django‘]"

        PythonHandler django.core.handlers.modpython    

        SetEnv DJANGO_SETTINGS_MODULE wenjuan.settings

        PythonInterpreter inves

        PythonDebug On

    </Location>

    注意如果是正式发布就把里面的PythonDebug 置为Off

    然后再添加:

    Alias /site_media c:/django/wenjuan/media

    <Location "/site_media/">

           SetHandler None

    </Location>

    Alias /media c:/Django-0.95/django/contrib/admin/media     (注意对应你装的django)

    <Location "/media/">

           SetHandler None

    </Location>

    <LocationMatch "(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">

           SetHandler None

    </LocationMatch>

    重启Apache,浏览 http://localhost/1/

    说明:可以通过http://localhost/single/1 一次打开所有问题,上一个是一题一题跳的。

  • 在上海的周末

          来上海快两个月了,公司还是创业期,周六一般也到公司,所以一周也就是周日自便。

          可是,真的到了周末又不知道有什么可做的了。

          上午睡个懒觉,下午洗了洗衣服,六点吃了晚饭实在不想再看电视了,索性跑到公司自己来“加班”。现在脑子里想的全是网站,似乎也只有想这个了。想别的也没用。

          周末终于过去了,下周末就到五一了,原打算上海-武汉-北京-上海,转上他一大圈,后来跟同学吃饭时一合计,相当不划算,就想还是留在上海做点事情吧。希望我的毕业刊早日出炉。

  • Django Models Field options

           对于所有类型字段都可用的一些属性:

    null

    False

    blank

    用于表单校验

    choices

    由二元组的可枚举集合(listtuple或其他)所代表的字段可选值

    class Foo(models.Model):

        GENDER_CHOICES = (

            (‘M’, ‘Male’),

            (‘F’, ‘Female’),

        )

        gender = models.CharField(maxlength=1, choices=GENDER_CHOICES)

    core

    以内联方式编辑对象

    db_column

    用于标注对应于字段属性的数据库列名称

    db_index

    Truedjango-admin.py sqlindexes会为此语句输出一个CREATE INDEX语句

    default

    默认值

    editable

    True

    help_text

    用于显示在admin表单中的额外帮助信息

    primary_key

    主键,一个object只能有一个主键

    radio_admin

    默认情况下Django admin用下拉框来选择ForeighKeychoices

    unique

    该字段值在表中是唯一的,该选项同时约束在数据库级别和Djano admin表单中

    unique_for_date

    Django admin表单验证,估计可防止重复提交

    unique_for_month

    title(unique_for_month="pub_date")

    unique_for_year

    validator_list

    field_data/all_data

    django.core.validators

  • Django Models的数据类型(二)

    下面是第二部分,基本类型大概就全了。

    ImageField

    upload_to

    height_field

    可选

    width_field

    可选

    需要验证,即Python Imaging Library

    IntegerField

    IPAddressField

    NullBooleanField

    相当于设置了null=TrueBooleanField

    PhoneNumberField

    美国电话号码格式

    PositiveIntegerField

    正整数字段

    PositiveSmallIntegerField

    小的正整数字段,取决于数据库特性

    SlugField

    maxlength(50)

    可选

    db_index

    默认为True

    prepopulate_from

    可选,用于指示在admin表单中的可选值

    短标签,仅包含字母、数字、下划线、连字符,一般用于url

    SmallIntegerField

    小整数字段,依赖于数据库特性

    TimeField

    auto_now

    可选,每次动作都会更新

    auto_now _add

    可选,一次产生

    URLField

    verify_exists(True),检查URL可用性

    USStateField

    两个字母表示的美国州名字段

    XMLField

    schema_path,必选

  • Django Models的数据类型(一)

            周末没事整理了一下Django Model的数据类型,发上来的时候才发现空间发表格太困难了,还要切开发。下面是第一部分:

    AutoField

    IntegerField

    BooleanField

    true/false

    CharField

    maxlength,必填

    TextField

    CommaSeparatedIntegerField

    maxlength,必填

    逗号分隔

    DateField

    auto_now

    可选,每次动作都会更新

    auto_now _add

    可选,一次产生

    DateTimeField

    auto_now

    可选,每次动作都会更新

    auto_now _add

    可选,一次产生

    EmailField

    FileField

    upload_to,可选

    object.get_myfile_url

    FilePathField

    path

    必填"/home/images"

    match

    可选,正则表达式,用于过滤文件名

    recursive

    可选,False,表示path的子目录是否包含在内

    FloatField

    max_digits

    必填,数字长度

    decimal_places

    必填,即有效位数

  • 新浪首页发现的长虹广告

            好久没上新浪了,突然被左边的一个flash广告吸引,看起来像个打乒乓球的小游戏,实际上你一旦单击也就激活了广告链接。

             实在是个不错的创意,http://ad4.sina.com.cn/200704/20/89167_changhong_guonei_120240.swf,感兴趣的可以去看看。

             不过有个bug,当球的轨迹一旦和桌面中线重合,你的拍子就不用移动了,球会一直往复下去。

  • 转一个去年的帖子

    樱花诗赛所写

    大巴 发表于 2006-4-9 0:23:00

    诗不是这个样子

    大学之诗更加不是这个样子

    大学之诗应是闻先生之诗,至少有闻先生之诗

    激昂是你的主旋律

    青年,让你的诗与你的血一起沸腾

    让我从诗里看见你的刚强

    让我从你的诗里看到国的希望

    你的诗总是飞舞着天使

    殊不知,你才是人间的天使

    飞舞吧,青年,你的诗也要飞舞人间

    让人间与你一同飞舞

    我更希望闭着眼听你的诗

    那诗里有你的梦乡

    清静是你的归宿

    我知道你是一个与我一样博爱的人

    你总是在意每一个闪过眼前的异性

    不管你是如何刻意强调一个朴素的形象

    我知道你的多情与我一样

    诗者,不必美丽;诵者,不必美丽。

    诗者,用心;诵者,用心。

    最恨无聊风雅人,只求听者一个“好”。

    你可知何谓田园?

    田园已非昨日田园

    儿时爱嚼棘棘菜

    儿时飞舞的蒲公英

    我长大了,你们却在哪里

    借着诗,让我道出我的心声

    借着诗,倾泻我真的感情

    诗里是我的实在

    偶尔出现的美的字词

    是我不得不说的爱

    何尝不愿归田园

    何尝不愿归山林

    田园何在?山林何在?

    诗也要道具吗?我不敢断言

    把你请进我的诗里

    实在是我的无奈

    即使你拿走了我的生命

    我依然甜蜜地叫着你的名

    嘿,瞧我这短暂却像放着脉冲的星

    坐在台阶上听着你的诗

    却像坐在天涯

    往后一步,同你一起用模糊的语言描绘世界

    往前一步,同你一起用犀利的目光勾勒人间

  • 点击量后面的自省

           百度空间的访问统计升级以后,百度的fans们真是大力吹捧,包括我。很多人一直盯着自己的访问量,也有人在这次升级以后意识到要寻找方法提升自己的访问量了。如果单纯提升自己的访问量,途经是很多的,不在此讨论。只是我认为博客应该是原创的,而且这个原创越是能够解决问题就越有用。这决定了写博的出发点,我至少提醒自己去追求后者,所以博名也叫做“实实在在”。
           原创解决方案并非专家博客的专利,希望多为互联网多造福。
  • 百度空间的访问统计升级了

           顺手打开高级设置看看访问记录,以前只有前一天的记录,现在还不错,增加了流量图表,把来源统计增加到两周,只可惜没有及早意识到这个事情而积累下一些数据。
           点击排名和评论排名也不错,因为到处都有了,你没有就显得太笨了。有了它不算麻烦倒是很方便。如果再增加一下“文风”分析,自动推荐一些相关博客,那么这个空间的圈子就更有意义了,也可以朝着我前面提到过的发展质量型圈子的方向发展。
           小小自恋一下,不知道是不是百度er看到我的帖子才增加的这些东西,呵呵。