Django中的静态文件

  不知道应不应该叫这个名字,反正给我的感觉就是它是静态的页面,纯的html语言,没有python在里面,在刚开始用django的时候,就想把主页做成一个静态的东西,那时候用的是step by step中第一讲的方法,只是把那个写死在程序中的字符串换成了一个文件的内容,然后改那个文件就可以更改主页,但是发现用不了外部链接的css,虽然可以把css内嵌到html文件中,但总觉得的些不爽。后来往后翻了翻step by step,看到最后一讲有说怎么在一个view中渲染一个简单的模板并输出,也就在是urls.py中加上下面这条语句:
(r’^$’, ‘django.views.generic.simple.direct_to_template’,
{‘template’: ‘homepage/index.html’}),
这时候才算找到了好一些的方法,在那个目录下面就可以按正常网页开发了,不过外部链接的文件都要使用基于templates的路径,也就是说那个index.html要放在templatex/hompage目录下,如果下面要使用css文件,还不能使用相对于index.html的相对路径,有些郁闷,正在考虑是不是把所有的css文件什么的放到一个统一的目录下,目录结构大变动啊。呵呵,睡觉了,醒来再折腾吧:)

Posted in Happy coding | Leave a comment

Look’n’stop

  号称世界排名第一的防火墙,上次用它由于上不了教育网直通车,换成了Tiny,最近配Tiny的规则配的很郁闷,所以考虑了半天,又换了回来,8过感觉这次好用多了。
  看了一些文章,发现配置也没什么难的,和其它的防火墙感觉上应该差不多,也就是配端口,然后设规则,只不过它可以在规则中配置连接的源或目标端口和IP地址,而且可以对各个程序分别配置,以前用过的防火墙不知道是没有这个东西还是我没找到。说真的,选择这个防火墙的时候,也考虑到了它的名气,但主要还是看上它的小巧,不像Tiny那样起个管理界面就要死一会。不过它的设置确实比较的让人郁闷,首先在程序规则里面要设,然后还要再去开端口,而且规则添加进去的时候,默认是block的,我是被这件事情郁闷了好几次。还有就是要对网络协议比较的了解,比如使用的端口,曾经开了个FTP服务器别人连不上,后来看了别人的规则里面才知道还要把数据口20打开(8过我现在把20开了,还没看别人能不能连上)。
   刚在调django,也碰到件比较郁闷的事情,django自带的服务器开起来后会有一个Error: (10022, ‘Invalid argument’),不清楚是怎么回事,睡一觉起来后再折腾吧。

btw: 刚想起来,装完lns后BT的又装了一个防火墙,jetico,免费的,大家说不错,不过一会还是卸了吧,要不然那规则会郁闷死我,后天去实验室装吧,哈哈。

Posted in 善用佳软 | Leave a comment

创新的数据总算导完了

  先是存成sql语句,然后回来才想起来,PHP用的是我自己建的表,而Django中要用它的表,两个结构不同,用不了sql语句,于是想到用导入csv文件的办法,刚好setp by step有这个例子,而且Django中可以直接导入csv文件,不用我再去写那些分隔什么的了,还是满方便的,所以就想到了导入csv文件。
  想好了就要开工,那个例子以前做过,所以还有点印象。首先是写module,主要就是构建数据表的结构,想了好久,才觉得大概能够把表结构定下来了,不过还是相当于留了两个备注字段,应该够用了吧,如果不够用需要倒数据的话那真要疯了。其实说疯也有些夸张,再写程序导吧,呵呵。
  一开始写的module中没有主键,主要是看它的文档中说它会自己加上一个自增的主键,所以没去理会,但是在导入的时候,有一个filter要选择一条记录,一开始不知道,使用第一个字段,即申请人做关键字,结果前面写进去的记录当碰到后面相同申请人的记录时,全部被覆盖(我的那个csv文件后面有一个空行,在导入的时候读入最后一行的时候会出错,下标越界,不过还好,前面的数据都导入了)。后来把csv文件分成了大概10条一个的小文件,再导入的时候才发现是这个问题,再看看它的文档说是如果用户自己没有设置自境的主键的话,系统会给设一个,不过我试了,不能调用,于是自己设一个吧(又把表结构重弄了一遍,真的很FT,还好没什么数据),后来问题就解决了。在module.py中的__str__方法中可以设置在管理界面中每一条记录显示的内容,step by step中说还有一个__repr__,但是我用了后没反应,不知道为什么。最后还要加上一个class Admin: pass以开启管理功能。
  在使用导入csv功能的时候,那个urls的映射要弄好,要不然服务器会提示找不到匹配的模式,不予解析。一般是在根目录下的urls.py中设置如果要访问app,则把app中的utls.py包含进来,然后再在urls.py中解析对应于app的地址映射。
  本来想用sqlite数据库,不过用了一段时间,感觉上还是有些不方便的地方,一是管理工具不是很方便,二是性能上处于劣势,最后考虑了一会,还是选用了mysql,导入的时候明显速度快了很多,不过那段导入的代码还是很有用的,到时候如果再换表结构的话,就又要用到它了。
  数据方面总算折腾完了,现在要把原来的表的记录改动一下,让它适应新的表的结构,还有一些细节方面的问题,像文件上传,显示的图标什么的,慢慢做吧,不管怎么说,大头数据导进来了,也没什么好怕的了。

btw: django中不能直接接收2000-01-01格式的字符串作为datetime类的输入,还要把它拆开成’2000′, ’01′, ’01′三个字串,不知道后续版本会不会把这个功能加上,虽然不加也能用,只要用下标把子串取出来就可以了,但总感觉有些不爽。

Posted in Happy coding | Leave a comment

CSS中的ID和class

  本来以为它们两个是没什么太大区别的,但是今天上网上一查,发现还是有些区别的。最主要的大概就是在CSS定义中,ID是以#开头的,而class是以.开头的。而且在网页编程中,一个ID只能出现一次,就像某个东西的标识符一样,在一个页面中,只能有一个,而class是可以出现多次的。看了一篇文章说,id是先找到结构或内容,再套用样式,而class是先定义好样式,再应用到多个结构或内容上,呵呵,还真有点这么回事 :)

Posted in Happy coding | Leave a comment

django的资源文件

  刚看了怎么在django的工程中加入资源文件夹,即放一些静态内容,像html页面,css文件什么的,其实放在外面也可以,但是总感觉有些怪,还好step by step讲到了这一课,其实也没什么难的,它给的例子是在urls.py中加了一行,以解析URL,然后在settings.py中加上了一个相当于常量定义的命令,把一个目录定义成常量,然后在网站根目录下建立了这个目录,于是,就可以了。urls.py中更改的和以前有些不太相同,使用了django.views.static.serve,而此参数需要一个参数,文档根目录,所以需要在后面加上{‘document_root’: settings.STATIC_PATH}),那个settings.需要在开头加上import django.conf import settings以导入模块。其它在网页中就可以使用/site_media来访问./media目录了,那个site_media是在urls.py中定义的,那个patten也有些不同,后面加上了一些东西,r’^site_media/(?P<path>.*)$’,还没太弄懂,过过再说。

Posted in Happy coding | Leave a comment

FileField的相关内容

  由于要存储文件,所以使用了FileField类型的变量,后来学会了查db_api手册,知道了它的方法,比如想设个超链接,可以调用get_FOO_url得到它的路径,不过在这之前要设置好settings.py中MEDIA_URL的值,否则得不到正确的结果,在设置的时候,需要在MEDIA_URL最后的那个目录后加一个/,否则好像地址不能很好的识别。别的还有一些方法,像文件名什么的,另外还有ImageField特有的一些方法还是满不错的。不过不知道为什么我现在不能上传文件名中有中文的文件,不知道是它不支持还是我设置的问题,有空去网上找找,实在不行就只有再骚扰limodou了。 ;)
btw: 如果那个FileField需要提供下载的话,需要在app或整个工程的urls.py中设置一下patten,要不然会出错,系统不认。

Posted in Happy coding | Leave a comment

Django中CharField的choices

  本来以为是比较难的问题,试了一堆记忆中的属性什么的,就是不认,后来骚扰了一下limodou才了解到原来是个这么简单的方法,而且在db-api手册中也有说。诶,看东西看的不仔细,丢人了啊。说说正题吧,就用step by step的例子说吧,本来显示的是M或F,因为直接调用的是address.gender,但是如果调用addres.get_gender_display就可以显示为男或女。简单吧,我怎么就没看到呢?

Posted in Happy coding | Leave a comment

Django中的TIME_ZONE

  今天在groups上看到有人在讨论这个问题,想想自己当时果然没有考虑到这个事情。在Django step by step中,写的是CCT,然后到django提供的网站上去查了一下,发现应该写成’Asia/Shanghai PRC’,但是好像还有一个选项是’Etc/GMT+8′,不知道这几个选项之间是什么关系。groups上有人说用CCT时会出现时间设置不对的问题,另外两个好像没有。我也没有试验,只是把这个东西写下来,算是知道有这么个东西吧,呵呵 :)

Posted in 杂九杂十^_^ | Leave a comment

Django中的templates

  昨天想改一下模板的路径,主要是想在每个app中建立一个templates的目录,然后系统直接去那个目录寻找相应app的view的模板,按网上的方法,在settings.py的TEMPLATE_DIRS项中加上了app的templates目录,但是在浏览器中查看的时候,它告诉我找不到模板,后来用Filemon看了一下,它在app目录下的templates中也是按着默认的路径查找的,也就是templates/APP_NAME/ MODE_NAME_list.html文件,于是就把templates改回来了。不清楚是它只能这么找还是我的配置有误。

Posted in Happy coding | Leave a comment

Django数据库中的FileField

   本来是想把料单直接存在数据库中,不过后来发现这些有可能要自己实现,考虑到我自己的功力,只好做罢,不过那天看django数据库的API时,发现有FileField一栏,当时就想能不能用,后来组织数据库的时候真用了上,不过后来在运行manage.py syncdb的时候,它提示说FileField需要uploda_to参数,但当时真没看明白,今天碰到错了,就去python的groups上查了一下,总算找到了设置的方法。
  首先是要设置setting.py中MEDIA_ROOT的值,是一个路径,而且是在机器上的绝对路径。说真的,对绝对路径真的很不感冒,对移植上很不好办,不过有些东西还真得要这种绝对路径,大概是对某些服务器来说,配置定下来后就不会再更改了吧,好像django的建议上也是说用django这个服务器不是长久之计,最好还是移植到Apache上,而移植过去就需要设置绝对路径。呵呵,有些跑题了,不过最后还是要考虑移植到Apache的虚拟主机上。后来在upload_to中可以写上upload_to=’file’,但是在admin的管理界面时,这是一个上传文件的表单,不清楚那个file是什么意思,不过最后文件是上传到那个MEDIA_ROOT标示的目录下了。但是碰到的一个问题是,在删除一条记录后,那个上传上去的文件不会被删除,这应该是件比较郁闷的事情。也许是我看错了,不过我试验的那一条是没有删除。
  暂时就想到这么多吧,不过算是把那个数据显示的东西搞定了,也在模板中正确的显示出来了,明天再看看怎么把导进去,接着做吧,感觉django还是满好玩的一个东西。

Posted in Happy coding | Leave a comment