进入vim退出后bash乱码的解决

This item was filled under [ 一步一步学习中 ]

从终端进入vim后,退出来,终端便出现乱码
然后再进入vim后,出来,便没有乱码
不知是怎么回事,请教下
(先前在配置vim,配置后便这样)
有什么方法可以撤回之前的配置的吗,谢谢了
当然最好能直接解决乱码拉, :em06

screenshot1

screenshot-1

screenshot-2

解决方案:

代码:
sudo update-alternatives –config vim

把vim链接到vim.basic

Bookmark and Share
Tagged with: [ , , ]

vim学习

This item was filled under [ vim, 一步一步学习中 ]

/*
* vim 基本使用
*
* 作者: 钱善海 <qianshanhai At hotmail Dot com>
* 创建时间: 2006.03.21
* 最后修改时间: 2007.08.30
*/

1.  什么是 vim

2.  vim 的基本操作
2.1 基本指令
2.2 多文件编辑
2.3 十六进制编辑
2.4 查找
2.5 替换

3.  编辑代码的设置和操作
3.1 ~/.vimrc 配置
3.2 使用 tag

4.  语法高亮
5.  文档
6.  参考文档

VIM 基本使用

1. 什么是 vim

vim 是一款编辑器, 是 Vi IMproved 的缩写. 也即 vi 的扩展版本.
(vi 的扩展版有很多, vim 是其中一种, 应该是最接近 vi 的一个扩展版)
主要作者是 Bram Moolenaar, 他编写了 Vim 的核心功能.
官方主页: www.vim.org , 使用与 GPL 兼容的协议发布, 可以获得(如下载)源代码.
(什么是 GPL ?  请看 http://www.gnu.org/copyleft/gpl.html )

那 vi 又是什么呢?  vi 也是一款编辑器, 起源于 1977 年, 作者是 Bill Joy.
vi 即 visual 的意思, 意指可视化编辑器, 非可视化编辑器有如 ed sed 等.

vim 是编辑器, 但更像是一个工具, 使用它可以高效的完成很多事情,
既然是一个工具, 我们就应该先学习再使用, 高效是在有一定的基础之上的.

vim 继承了 Unix 和 vi 的哲学: 简单, 高效.

1.1 使用 vim 的三大理由

a) vim 是用 c 语言写的, 可以移植到几乎任何操作系统
b) vim 是最接近于 vi 的一个扩展版本
c) 语法高亮, 很适合于编写各种代码

2. vim 的基本操作

2.1 基本指令

在 vim 中, 光标的移动是基础, 只有熟练光标的移动才能体会 vim 的高效,
并且, 很多操作都是和光标移动有关的. 另外, 使用 vim 时, 应该只使用
下面这个区域中的按键:

~         …         <- (即 BackSpace 键)
…       …         …
Ctrl      …         Ctrl

建议: 每天使用 vim 一个小时熟悉指令, 连续七天即可.

** 下面除了特别说明外, 使用 ^X 表示 Ctrl-X , X 为任意字符.

vim  有六种模式, 为了弄混, 先假定有三种:

a. Normal mode(common mode, c-mode)  称为普通模式
进入 vim 后的就是处于 c-mode , 只能下下按键指令, 不能输入文字.

b. Insert mode(i-mode)  称为编辑模式
按 i 就会进入 i-mode, 此时才可以输入, 按 ^[ 又会回到 c-mode

c. Ed mode(common-line mode, e-mode)   命令行模式
按冒号 :  就会进入 e-mode

e-mode (命令行模式): (简单命令, 复杂的在后面)
:q  退出文件  :q!  强制退出  :w  写入文件  :w!  强制写入   :wq  写入并退出
:w foo  写入文件 foo         :r foo  读入文件 foo

c-mode (普通模式):

进入 i-mode:
i  在光标前编辑    I  在行首编辑    o  在光标所在行下开启新行
a  在光标后编辑    A  在行尾编辑    O  在光标所在行上开启新行
s  删除当前光标所在字符后编辑       S  删除当前行(不包括行前空白)后编辑
s 和 S 并不常用.

光标移动和删除:                       k            H  屏幕左上角非空白处
h  左  j  下  k  上  l  右       h     l         M  屏幕中间非空白处
j            L  屏幕左下角非空白处
w  右移下一个字的开始处,  e  移到所在字的末端  b  移到上一个字开始处
W E B 与上面一样, 不同的是以空白区分字(word)
gg 文件首   G  文件尾  x  删除光标所在字符  X 删除光标前的字符
0  行前        ^  行前非空白处   $  行尾
d  删除指令,与其它指令组合, 如 dw  删除一个字  d0  删至行首
dd 删除当前行     D  删至行尾
** 删除的内容会放到缓冲区, 使用后面的 p 可以粘贴

以上指令可以和数字组合, 如:
50l 表示向后移 50 个单元,   d5w  删除后面 5 个字
dL  删除到屏幕底端          100gg  跳至文件的第 100 行, 或者 100G

另外一些基本操作:
K  查找当前的字的 man 页, 相当于执行 :! man <cword>, 写 C 代码非常有用.
.  重复上一个改变, 这里的改变是插入, 删除或替换操.作
u  撤销
^R 反撤销
%  当光标位于小中大括号时, 移动到小中大括号相对应的左右括号,
J  把一行连接到当前行
=  重新排版指令, 如   =% , =L 等等
>> 向右缩进,   3>>                     ^F  向后翻页
<< 向左缩进                            ^B  向前翻页
zz 使当前位置成为屏幕的中间      [I  显示包含当前字的所有行

标签 mark  --  方便跳来跳去

m   标签指令,  mx  把当前位置标为 x , x 可为 a-zA-Z
'x  跳至标签为 x 所在行的行首非空白处
`x  跳至标签为 x 所在行标签时的位置

选中:

v   按行选中, 以单元为单位
V   按行选中, 以行为单位
ctrl-v  按列选中
v%   vL  v$
选中后可以进行一些操作:
u   转成小写   U  转成大写   y  拷贝  >  向右缩进    <   向左缩进

yank & paste:
y  拷贝指令    p   粘贴指令, 粘贴由 x, X, d, D, y 引起的缓冲区
yy 拷贝当前行  y4j 拷贝当前行和后 4 行
y`a  拷贝至标签 a , 以行为单位
y'a  拷贝至标签 a , 以字符为单位
2p   粘贴 2 次,  xp  对换当前字符和下一字符, ddp 对换当前行和下一行

替换(r):

rx  把当前字符替换为 x, x 为任意字符
R   替换 n 个字符, 直到按 Esc 或 ^[ 为止
例子:  05l^V3jra  把当前行向后开始的 4 行的第 6 列换成 a

查找:

/   向后查找               ?   向前查找
*   向后查找光标所在字     #   向前查找光标所在字
n   下一个                 N   上一个

查找时在 e-mode 下的相关设置:
:set hls   显示查找高亮        :set nohls  取消查找高亮

文件和当前信息:
^G         g^G

记录和重复操作: (这类功能极少用到, 用到时再来查找)
q  记录指令         @   重复操作指令
qx...q   x 为 a-zA-Z , ... 表示一系列的操作, 最后的 q 表示结束这个记录.
@x  重复标签为 x 的记录,  n@x  表示重复 n 次.

两类指令:
1.  与区域无关, 像 h, j, k, l ^F ^B 这些基本的光标移动指令和 m 等等
2.  与区域有关:
a)  d  y  =
这一类的操作与当前光标和最后的光标有关, 所以称做与区域有关,
如 dG 将删到文件尾, 当然是从当前位置开始的了,
又如  d%  =100j yL , 并且这几个指令在选中块之后也能使用
b)  > < u U  指令在选中块之后使用

折叠:
zf  后加上移动指令, 就能折叠这个区域, 如 zf%  zfG  等等,
通常在看代码时使用. 对着折叠的行按 0 展开.

快速移动:
a.  ^F ^B w W  %  30j 等
b.  /  ?
c.  fo  移到行中第一个字符 o 的位置

列编辑:
a. ^V3jISTRING^[    在选中的三列插入 STRING
b. ^V3j$ASTRING^[   在选中的三列的行尾添加 STRING
c.  请看 :h  中的 visual.txt

大小写:
~  大小写互换  g~~  把该行的大小写互换
guu  把当前行换成小写     gUU  把当前行换成大写   gUw  ??

更多的删除和变换见 :h 中的 change.txt

i-mode (编辑模式):

^P  自动补全,或 ^N        ^[   进入 c-mode 模式

2.2 多文件编辑

a. 命令行
$ vim file1 file2

:n 下一个文件,  :N 上一个文件
:first  第一个文件    :last 最后一个文件

b. e-mode
:sp foo  打开文件 foo      :vsp foo     :res +10  增加窗口高度

^WW  切换文件   ^Wj   ^Wk

编辑包括所有 word 的文件:
$ vim `grep -l word */*.c`

在 vim 7.0 后的版本, 还可以使用多 Tab 的模式编辑, 例如:

:tabedit file2.cpp

或者在命令行加上 -p 使用:

$ vim -p  *.cpp

全部退出:

:qa

2.3  16 进制编辑

vim 本身不支持 16 进制编辑, 也建议不要使用 vim 进行十六进制编辑,
但偶尔想简单编辑时, 可以通过外部命令 xxd 来编辑:

:% !xxd   编辑     :% !xxd -r   恢复

2.4  查找

默认情况下查找是大小写敏感的, 可以  :set ignorecase 使之忽略大小写,
执行  :set noignorecase  又变成大小写敏感了.

2.5  替换

:%s/a/b/g   把文件当中的所有的 a 换成 b , % 表示整个文件内容, g 表示全部替换
s/a/b/g 可以写成 s|a|b|g  等等
:%s/^/  /g  每一行前面加上两个空格, 还记得 ^ 嘛?
:n,m s/$/ ,/g   在第 n 行和第 m 行的每一行的行尾加上" ,"
:% s/^M//g  当中的 ^M 为 ^VM , 即回车符, 意即把回车符替换为空

:g /^$/d    删除掉所有空行:

2.6  调用外部命令

:! cmd   执行命令 cmd                 :sh  暂时退出 vim, 执行 $SHELL

例如, 调用 sort 排序:

:%!sort

3.  编辑代码的设置和操作
3.1 ~/.vimrc 配置
vim 在启动时会先读取文件 ~/.vimrc , 因为可以把一些设置写到该文件中:
如我的 ~/.vimrc 文件内容为:

"set term=vt100
set ts=4
set sw=4
set fileencoding=cp936
set fileencodings=cp936
set encoding=cp936
set autoindent
set showcmd
set nocompatible
set smartindent
set showmatch
set t_Co=8
set t_Sf=^[[1;3%p1%dm
set t_Sb=^[[1;4%p1%dm
map <C-J> :set filetype=cpp<CR>
set hls
set incsearch

set path=.,/usr/include,include,inc,../include,../inc
set path+=/usr/local/SRBC2.0/include

set tags+=tags;

"set wrap
syntax on
highlight Comment ctermfg=cyan
highlight Macro   ctermfg=gray
highlight Include ctermfg=magenta

if has("autocmd")
filetype plugin indent on
augroup vimrcEx
au!
autocmd FileType text setlocal textwidth=78
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\   exe "normal g`\"" |
\ endif
augroup END
endif

map <C-K> gt  "在多 TAb 编辑时方便跳转
map <C-H> gT
map <Tab> gt

** 注意上面的 ^[ 是这样输入的: ^V[
注释使用双引号.

3.2 使用 tag

tag 是什么? 那是一个索引文件, 能够在 vim 或多种编辑器中使用.
使用 tag 分两步, 一是制作 tag 文件, 二是在编辑器中使用.

3.2.1 制作 tag

3.2.1.1 生成 tags 文件

制作 tag 是个简单的过程, 需要使用外部命令 ctags 完成, 需要注意的是,
这里的 ctags 是 GNU ctags, 如果发现当前系统的 ctags 使用不了, 请找
系统管理员或者本文作者帮忙解决.

在 vim 中, 只需要在最上层的目录生成 tags 文件即可,
这时在 .vimrc 中加入:  set tags+=tags;  表示如果当前目录找不到文件 tags,
那么往上一层目录查找, 直到找到为此.

当然了, 可以在任意一个目录下生成 tags 文件.

生成 tags 文件最简单的方法是在 ctags 中使用 -R 参数, 表示包括所有子目录
中的文件, 如:

ctags -R .

或者指定文件: ctags *.cpp *.h

有时候源代码中包括了如 esqlc 或 proc 的代码, 这时可加上 --language-force
参数, 让 ctags 强制认成某种语言, 如认成 c++ 语言:

ctags -R --language-force=C++ .

3.2.1.2 svn 问题

使用 svn checkout 出来的代码, 会有一份相同的在目录 .svn 下, 这时如果用 -R
参数制作 tags 文件, 会包含多份一样的标记, 可用 --exclude 把它排除掉:

ctags -R --language-force=C++ --exclude=.svn .

3.2.2 使用 tag

在 vim 中, 可按下面的命令使用 tag :

^]   跳至该 tag 处, 如果存在多个一样的 tag, 跳至第一个, 可用 g] 显示全部.
^T  返回
g]   显示该 tag 的所有信息, 这时可按数字加回车选择.

如果找不到 tags 文件, 可以直接使用 set tag=/path/to/tags 指定.

4.  语法高亮

使用   :syntax on   就能够激活语法高亮显示了, 如果还没有显示颜色,
可能需要  :set filetype=cpp  表示使用 cpp.vim 作为语法高亮显示.
使用不同颜色方案:
:colorscheme default
如果没有设置环境变量 VIMRUNTIME 可能也会没有显示语法高亮

[qsh@thai src]$ ls /usr/local/share/vim/vim64/colors/
README.txt     default.vim    elflord.vim    morning.vim    peachpuff.vim
blue.vim       delek.vim      evening.vim    murphy.vim     ron.vim
darkblue.vim   desert.vim     koehler.vim    pablo.vim      shine.vim
[qsh@thai src]$ echo $VIMRUNTIME
/usr/local/share/vim/vim64

还可以使用自己的配色方案:

$ mkdir ~/.vim/colors
$ cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim

然后这样使用:       :colo  mine

一般来说, 默认的配色方案就已经很好看了.

有时想自己定义关键字颜色:

:highlight Comment ctermfg=cyan guifg=cyan

这句在写代码时很管用的, 表示注释用蓝色显示.
其它具体使用可参考 vim 自带的文档(见后面)

5.  文档

5.1 查看帮助

———————————————————————–
条目                          前缀                      例子
———————————————————————–
Normal模式命令                  无                     :h k
CRTL控制字符                    CRTL_                  :h CRTL_r
Visual视图模式                  v                      :h v_u
Insert插入模式命令              i                      :h i_CRTL-o
ex-模式命令                     :                      :h :set
Command-line命令行编辑          c                      :h c_<BS>
命令参数                        -                      :h -m
选项                            ‘                      :h ‘winminwidth’
———————————————————————–

:h <Left>
:h <CR>
:h <Up>
:helpg[rep] {pattern}  搜索所有的帮助文本并给出一个匹配 {pattern} 行的列表.

5.2  入门文档

a. $ vimtutor
在 shell 下执行 vimtutor 就会进会 vim 的入门教程.

b.  进入 vim 后输入 :h 就进入 vim 的帮助, 蓝色如下面的这些

|usr_22.txt|  Finding the file to edit
|usr_23.txt|  Editing other files
|usr_24.txt|  Inserting quickly

的两竖线之间的文档都已经作了 tag , 把光标移到相应位置就可以用 ^] 跳转了.

c.  若想看指令 f 的帮助, 输入 :h f 即可.

d.  可以到 www.vim.org 查看

6.  参考文档

参考了 vim 自带的文档: 即进入 vim 后, 按 :h

Bookmark and Share
Tagged with: [ ]

vim常用插件介绍(转)

This item was filled under [ vim, 一步一步学习中 ]

转自:http://blog.csdn.net/xuzhihong_gdut/archive/2009/01/15/3789080.aspx

vim常用插件介绍:

vim是Linux下强大的编辑器之一,是每个linuxer并不可少的工具。vim的插件扩展
工能为vim增加了不少的特色。关于如何将vim打造IDE网上的资料也不少,下面只是
我自己对vim的配置。

推荐文章:http://blog.csdn.net/wooin
<<手把手教你把 Vim 改装成一个 IDE 编程环境>>

工具或插件介绍,如想进一步了解请参照官方文档。
1) Exuberant Ctags : 它可以为你的源码产生一个tags文件,并且在tags文件中记录
源文件的索引以帮助你快速得找到某个符号的定义。它支持相当多的语言,如C、C++、C#、Shell等等。
常用命令:Ctrl+] 跳到声明定义处  Ctrl+T 跳回原处
下载地址:http://ctags.sourceforge.net

2) trinity.vim : Build the trinity of srcexpl, taglist, NERD_tree to
be a good IDE. 这个插件将 srcexpl、taglist、NERD_tree这三个插件集中起来做成IDE
taglist: Source code browser (supports C/C++, java etc)
srcexpl: A Source code Explorer based on tags works like context
window in Source Insight
NERD_tree: A tree explorer plugin for navigating the filesystem
下载地址:http://www.vim.org/scripts/script.php?script_id=2347

3) omnicppcomplete: C/C++ omni-completion with ctags database
这个插件用于自动补全,可用于 . ->  :: 等操作符。
下载地址:http://www.vim.org/scripts/script.php?script_id=1520

4) c.vim: C/C++ IDE –  Write and run programs. Insert statements, idioms,
comments etc. 这个插件的功能比较多,它集成了编译、链接、运行、注释等许多IDE常用的功能。
下载地址:http://www.vim.org/scripts/script.php?script_id=213

5) echofunc.vim : Echo the function declaration in the command line for C/C++.
这个插件主要用于显示函数声明。
下载地址:http://www.vim.org/scripts/script.php?script_id=1735

6) stl.vim: Improved C++ STL syntax highlighting.
原来的vim对C++的语法高亮不支持像string、 vector之类的STL模板类。
下载地址:http://www.vim.org/scripts/script.php?script_id=2224

7) stlrefvim.vim: A C++ Standard Template Library reference manual.
这个插件让你轻松的拥有C++ STL的文档帮助
下载地址:http://www.vim.org/scripts/script.php?script_id=2353

知道了这个插件的作用之后就可以行动了,首先需要具备一些vim的基本知识:像如何使用插件(每个插件
都有它的安装帮助)、vim一些文件夹的作用(如plugin,syntax…)、vim键映射等。
建议在使用这些插件之前先读一读它的文档,了解一下这些插件的作用和主要的功能,并且看一下它的文件
结构,大概看一下它的源码,这样就方便你以后对插件的修改(如改变快捷键映射)。这个学习过程并不困
难也无须花大量的时间。

下面是我的vim配置文件

“基本配置
set mouse=a                 ”启动鼠标功能
set nocompatible         “不兼容旧版本
set nu                   “显示行号
set tabstop=4            “tab=4
set shiftwidth=4         “缩进4
set wrap                 “折行
set ruler                “在vim窗口右下角显示光标位置
set ignorecase           “忽略大小写
“set hlsearch             “查找时高亮显示
set showmode             “显示当前工作模式

syntax enable            “打开色彩
syntax on                “打开语法高亮
set cindent              “使用C语言的缩进方式
set autoindent             ”自动缩进
set showmatch            “显示括号配对
set smartindent          “智能对齐
“set whichwrap+=h,l      “使用h,l移动可以跨行
“set mps+=<:>            “让<>可以使用%跳转
“set foldmarker={{{,}}}

“备份相关配置
set nobackup
set backupext=.bak
set writebackup          “写备份但关闭vim后自动删除
“set backupdir=path      “设置备份路径

“Omnicppcomplete Configuration
“下面两行开启了vim三种智能
“1.自动识别file类型
“2.用file type plugin脚本
“3.使用缩进定义文件
“set nocompatible
filetype plugin on
filetype indent on
let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_MayCompleteScope=1
set completeopt=longest,menu          “关掉智能补全时的预览窗口
map <silent> <F12> :!ctags -R –c++-kinds=+p –fields=+iaS –extra=+q .<CR>
set tags+=/usr/include/c++/4.2.4/tags

“Tlist Configuration  taglist.vim
let Tlist_Process_File_Always=1     “Always Process File
“let Tlist_Auto_Open=1              “Open Tlist when vim start
let Tlist_Enable_Fold_Column=1
let Tlist_Exit_OnlyWindow=1         “If only Tlist window works, vim exit.
let Tlist_Sort_Type=”name”          “sort by name
let Tlist_Show_One_File=1

“echofunc Configuration
let g:EchoFuncKeyPrev=’<C-b>’
let g:EchoFuncKeyNext=’<C-n>’

“trinity.vim: Build the trinity of srcexpl,taglist,
“NERD_tree to be a good IDE
nmap <F8> :TrinityToggleAll<CR>
nmap <F9> :TrinityToggleSourceExplorer<CR>
nmap <F10> :TrinityToggleTagList<CR>
nmap <F11> :TrinityToggleNERDTree<CR>

gvim

Bookmark and Share
Tagged with: [ ]

配置VIM下面的Python环境

This item was filled under [ vim, 一步一步学习中 ]

原文:http://hi.baidu.com/camark/blog/item/0806cc3f37a390c67d1e71ae.html]http://hi.baidu.com/camark/blog/item/0806cc3f37a390c67d1e71ae.html(有改动)
不知道为什么,我的vi安装了vim-python以后依然没有语法加亮和自动缩进功能,使用起来非常的不顺手。今天下定决心,自己Google一下,终于搞定。
完成以后有一下功能:
1、Python语法加亮
2、自动缩进
3、自动补全
4、自动完成
哈哈,用起来是否顺手。
在这里记录一下,配置过程。
1、安装软件包,最好安装vim-full包和vim-python
sudo aptitude install vim-full vim-python
2、建立自己的.vimrc 文件,我的配置如下(参考自ubuntu中文论坛)
” 自动补全命令时候使用菜单式匹配列表
set wildmenu
” 允许退格键删除
set backspace=2
” 启用鼠标
set mouse=a
” 文件类型
filetype on
filetype plugin on
filetype indent on
” 设置编码自动识别, 中文引号显示
“set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set fileencodings=utf-8,gbk
set ambiwidth=double
” 移动长行
nnoremap  gj
nnoremap  gk
” 高亮
syntax on
” 设置高亮搜索
set hlsearch
” 输入字符串就显示匹配点
set incsearch
” 输入的命令显示出来,看的清楚些。
set showcmd
” 打开当前目录文件列表
map  :e .
” Taglist
let Tlist_File_Fold_Auto_Close=1
set updatetime=1000
map  :Tlist
” 按 F8 智能补全
inoremap
” vim 自动补全 Python 代码
” 来自http://vim.sourceforge.net/scripts/script.php?script_id=850
autocmd FileType python set complete+=k~/.vim/tools/pydiction-1.2
自动补全需要下载pydiction这个软件包,可以从这里下载:

http://vim.sourceforge.net/scripts/script.php?script_id=850

解压文件
tar xzvf pydiction-1.2.tar.gz
得到一个文件夹pydiction-1.2文件夹。
拷贝文件夹里面的pydiction文件到Home目录下面的.vim/tools目录下面(如果没有,需要手工建立):
mkdir -p ~/.vim/tools
然后启动vim,就会看到vim自动进入Python模式了,包括语法加亮和自动缩进功能。
按F8或者Ctrl+N会出现“自动完成的提示”。

还是非常舒服啊!
对于vim,我还是一个初学者,自己加油啊!

Bookmark and Share
Tagged with: [ , , , ]

aptitude 使用快速参考(转)

This item was filled under [ 一步一步学习中 ]

aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。以下是笔者总结的一些常用 aptitude 命令,仅供参考。

命令 作用
aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件

当然,你也可以在文本界面模式中使用 aptitude。

Bookmark and Share
Tagged with: [ ]

VI(VIM)编写程序技巧

This item was filled under [ vim, 一步一步学习中 ]

VI(VIM)编写程序技巧

此页由Linux Wiki用户Chenxing于2008年11月19日 (星期三) 09:56的最后更改。 在Linux Wiki用户MinuxPigguo的工作基础上。

出自Linux Wiki

热切期盼您改进本页,要改进本页,请先登录,并选择编辑。

由于转载不当很可能造成格式的破坏,降低文档价值,本文不推荐转载。但是您确实有转载本文档的权利,如果您一定要转载,请一定保留本文的所有信息。

vi作为优秀的文本编辑器,同样可以胜任程序编写任务。本文介绍使用VI进行程序设计的一些技巧。

语法加亮显示

目前的vim支持多种语言的语法高亮显示。在命令状态下输入:

:syntax on

也可缩写为:

:syn on

也可以指定语言,如C语言:

:set syntax=c

括号匹配

在命令状态下,可以使用%进行括号匹配。即在括号处按下”%”,光标会跳转到与之匹配的括号。

在VIM 7或更高版本中,支持在插入状态下括号的自动匹配,即高亮显示光标所在处的括号和与之匹配的括号。若要关闭此功能,可用

:NoMatchParen

如果要再开启,可以用

 :D oMatchParen

如果要更改颜色,可以用hi,例如:

:hi MatchParen ctermbg=blue ctermfg=white

如果要更改需要匹配的符号,可以编辑matchpairs选项

注释管理

手动地逐行加注释一般较繁,推荐装一些插件来快速地注释(或取消注释)代码,参见Vim与程序注释

缩进

使用自动缩进可能需要设置,vim中对自动缩进的详细设置办法见Vim代码缩进设置。下面介绍调整缩进的方法:

插入状态

Ctrl-T
右缩
Ctrl-D
左缩
^Ctrl-D
删除行首空格

命令状态下左右缩进

>> 右缩进
<< 左缩进
n<< 或 n>> 缩进多行,如4>>

可视状态下的缩进

使用<>进行缩进,也可使用n<n>多节缩进

可以用 = 对选中的部分进行自动缩进。

粘贴时的自动缩进

]p 可以实现p的粘贴功能,并自动缩进

光标移动

gd 到局部变量的定义
gD 到全局变量的定义
[[ 到当前块起始的{处
]] 到当前块结束的}处
Ctrl-O 返回到跳转前的地方

配合ctags,还可使用Ctrl-]进入函数,Ctrl-T返回

其它

K 转到当前函数的文档,需要安装manpages-dev。
:set number 或 :set nu 显示行号
:set nonumber 或 :set nonu 不显示行号
Ctrl-N 或 Ctrl-P 插入模式下的自动补全功能。
Bookmark and Share
Tagged with: [ ]

ntu(乌班图)下设置evolution收邮件(转)

This item was filled under [ linux ]

设置evolution收邮件时搜索后,整理的如下:
我要说的是:二者有一点小差别,163的不需要使用安全链接, gmail的需要设置为SSL安全链接。

1) Gmail
在Gmail上找不到Evolution的配置方法,网上也有不少人询问如何配置,我在网上找到一篇英文的配置说明,我按其设置成功了,所以拿来与大家共享,简单翻译如下:
(注:要使用客户端发送接收gmail,需要在gmail中启用pop,具体见gmail的帮助)

1. 启动Evolution。
2. 点击“编辑”──首选项。
3. 点击添加(账户)/注:如果你已经设置过gmail账户,则可以点击编辑。
4. 在名称里输入你的名字,在请求的信息中全名和电子邮件地址都填写你的Email地址。填好之后点击接收电子邮件标签。
5. 接收电子邮件:服务器类型:POP; 服务器:pop.gmail.com; 用户名:你的gmail地址,如kakald@gmail.com; 使用安全链接:SSL加密; 记住密码。设置好后点击下一个标签。
6. 接收选项:按自己喜欢设置,并不影响gmail是否在evolution中工作。
7. 发送电子邮件:服务器类型:smtp; 服务器:smtp.gmail.com; 服务器需要认证:选中; 使用安全链接,SSL加密; 身份验证:用默认的”Plain”; 用户名:同你的邮件地址,如kakald@gmail.com,最后记住密码。
8. 默认选项卡可以依喜好设置,或保持默认。
9. 点击应用,完成设置。

现在你可以试试发送接收邮件,如果提示你输入密码,说明成功了,你可以用Evolution发送接收gmail邮件了。
如果有问题请留言讨论,或给我发邮件:kakald@gmail.com

2) 163 email
成功在ubuntu上配置evolution的163邮箱,和大家一起分享
标识:名称(N):张鼎武的邮箱   全名:张鼎武  电子邮箱地址:zdw_208@163.com 其他项就不要填写了
接收电子邮件: 服务器类型:pop 服务器:pop.163.com 用户名:zdw_208 使用安全连接:不加密  认证类型:密码
发送电子邮件   服务器类型:smtp 服务器:smtp.163.com 服务器需要认证:需要 使用安全连接:不加密 类型:PLAIN  用户名:zdw_208 记住密码:打上勾,免得下次重新输入
当然用户名要填写你们的名字了哈哈。我懒得改名字了,大家对着改吧

---------------------------------------

转自:http://blog.ednchina.com/walnutcy/153570/message.aspx

Bookmark and Share

python库

This item was filled under [ 一步一步学习中, 易懂python ]

由于设计者和开源社区的共同努力,在python中有大量优秀的库可以被直接调用以高效地完成不同需求的工作。这里列举一些常见常用的库:
Tkinter———— Python默认的图形界面接口。
Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的, 目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开 发。Perl、Scheme等语言也利用Tk库进行GUI开发。Tkinter是跨平台,在各种平台下都能使用。
Python Imaging Library(PIL)————python提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进 行一些图形效果的处理,如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。
Pmw(Python megawidgets)Python超级GUI组件集————一个在python中利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。
PyXML———— 用Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容:
xmlproc: 一个符合规范的XML解析器。
Expat: 一个快速的,非验证的XML解析器。 还有其他
和他同级别的还有 PyHtml PySGML
PyGame———— 用于多媒体开发和游戏软件开发的模块。
PyOpenGL———— 模块封装了“OpenGL应用程序编程接口”,通过该模块python程序员可在程序中集成2D和3D的图形。
NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很 明显。NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代 Magma, Maple, Mathematica和Matlab 这类工具。
MySQLdb模块———— 用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。
PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop
PyQt ———— 用于python的Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是 Scintillar编辑器类的Qt接口。
PyMedia ———— 用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。
Psyco ———— 一个Python代码加速度器,可使Python代码的执行速度提高到与编译语言一样的水平。
Python-ldap ———— 提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x。
smtplib模块 ———— 发送电子邮件。
ftplib模块 ———— 定义了FTP类和一些方法,用以进行客户端的ftp编程。我们可用python编写一个自己的ftp客户端程序,用于下载文件或镜像站点。如果想了解ftp协议的详细内容,请参考RFC959。
xmpppy模块 ———— Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说,我们可以通过该模块与Jabber服务器通信,是不是很Cool。
下面这些就不详细介绍,只列出名字和功能
adodb ———— ADO数据库连接组件
bsddb3 ———— BerkeleyDB的连接组件
chardet ———— 编码检测
Cheetah ———— 构建和扩充任何种类的基于文本的内容
cherrypy ———— 一个WEB framework
ctypes ———— 用来调用动态链接库
Cx-oracle ———— 连接oracle的工具
DBUtils ———— 数据库连接池
django ———— 一个WEB framework
DPKT ———— raw-scoket网络编程
docutils ———— 用来写文档的
dpkt ———— 数据包的解包和组包
feedparser ———— rss解析
Kodos ———— 正则表达式调试工具
Mechanize ———— 爬虫连接网站常用
pefile ———— windows pe文件解析器
py2exe ———— 用来生成windows可执行文件
pycurl ———— URL处理工具
pydot ———— 画图的,graphiz
pyevent ———— Python的事件支持
pylint ———— 培养良好的编码习惯
Pylons ———— 又一个web framework
pypcap ———— 抓包的
pysqlite2 ———— SQLite的连接组件
python-dnet ———— 控制网络安全的其他设备
pythonwin ———— Python的Windows扩展
pywmi ———— 省了好多折腾功夫
reportlab ———— Python操作PDF的Libary。
scapy ———— 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”
scons ———— 项目构建工具,写好了模板用起来还是很方便的
sendpkt ———— Python发包
setuptools ———— 一套python包管理机制
simplejson ———— JSON的支持
sqlalchemy ———— SQL数据库连接池
SQLObject ———— 数据库连接池
twisted ———— 巨无霸的网络编程框架
winpdb ———— 自己的程序或者用别的库不太明白的时候就靠它了
wxPython ———— GUI编程框架,熟悉MFC的人会非常喜欢,简直是同一架构
除此之外还有很多,根本无法完全列举。
开源社区的工作已经完成到这样的程度,基本上各种常见的编程需求都已经有非常成熟稳定高速的模块来实现,你所需要做的,只是去把它找出来然后阅读文档。

Bookmark and Share

python 简介(转)

This item was filled under [ 易懂python ]

作者:凉茶
转自:http://blog.pconline.com.cn/article/228645.html
----------------------------------------------------------

Python (发音:[ 'paiθ(ə)n;

(US) 'paiθɔn ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。
这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。
目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。
Python的特色
简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
高层语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC和Symbian!
解释性————这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
面向对象————Python即支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
概括————Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。
Python的Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
#!/usr/bin/env python
print “Hello, world!”
或者:
import sys
sys.stdout.write(“Hello, world\n”)
Python的历史
Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC 语言的一种继承。之所以选中 Python(大蟒蛇的意思)作为程序的名字,是因为他是一个Monty Python的飞行马戏团的爱好者。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误(的确如此,Python 与其它的语言如C、C++和Java结合的非常好)。同时,他还想实现在 ABC 中闪现过但未曾实现的东西。
就这样,Python在Guido手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
Python在编程语言中的定位
很多大规模软件开发计划例如 Zope, Mnet 及 BitTorrent. Google都在广泛地使用它。
通常认为,Python是一种解释性的语言,但是这种说法是不正确的,实际上,Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。
基于C的Python编译出的字节码文件,通常是.pyc格式。
在实际开发中,python常被昵称为胶水语言,这不是说他会把你的手指粘住,而是说他能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。
Python的设计理念
可扩充性可说是Python作为一种编程语言的特色。新的内置模块(module)可以用C 或 C++写成。而我们也可为现成的模块加上Python的接口。Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。
Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:
There should be one– and preferably only one –obvious way to do it.
有意思的是,这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There’s More Than One Way To Do It)完全相反。这似乎是人们常把Perl和Python互相比较的重要原因。
Python语言是一种清晰的语言的另一个意思是,它的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。这样有意的强制程序员养成良好的编程习惯。其中很重要的一项就是Python的缩进规则。
例如if语句:
if age<21:
print “You cannot buy wine!\n”
print “But you can buy chewing gum.\n”
print “this is outside if\n”
一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。
另外Python在其他部分的设计上也坚持了清晰划一的风格,这使得Python称为一门易读性、易维护性好,并且被大量用户所欢迎的、用途广泛的语言。Python直接编写的程序段有时运行效率甚至高于用C编写的程序。
Python的不适之处
虽然Python是一个非常成功的语言,但对于习惯其他语言的程序员,有两个地方会让他们感觉略有不适。
1. 强制缩进
这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。
2. 单行语句和命令行输出问题
很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)
Python的缺点和补救措施
NO.1 运行速度(虽然比java快,但没法和需要编译的语言相比。)。有速度要求的话,用C++改写关键部分吧。
NO.2 国内市场较小(国内以python来做主要开发的,目前只有一些 web2.0公司)。但时间推移,目前很多国内软件公司,尤其是游戏公司,也开始规模使用他。
No.3 中文资料匮乏(好的python中文资料屈指可数)。托社区的福,有几本优秀的教材已经被翻译了,但入门级教材多,高级内容还是只能看英语版。
NO.4 构架选择太多(没有像C#这样的官方.net构架,也没有像rudy由于历史较短,构架开发的相对集中。ruby on rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。
Python的前景
Python在编程领域的占有率一直处于稳步上升之中,根据最新的数据,Python排名第六。前五名分别是Java、C、VB、PHP和C++. 作为一个很年轻的语言,Python的位置已经相当令人振奋了。随着微软将Python纳入.Net 平台,相信Python的将来会更加强劲发展。Python 很可能会成为.Net平台快速开发的主流语言。欲了解这方面情况,请参考Iron Python的相关信息.
著名的搜索引擎 Google 也大量使用Python。更加令人吃惊的是,在Nokia智能手机所采用的Symbian操作系统上,Python成为继C++,Java之后的第三个编程语言!2006年的Google编程大赛已经将Python作为参赛语言之一,可见Python的影响力之巨大。
Python的应用
Zope-应用服务器
Plone-内容管理系统
Django-鼓励快速开发的web framework
Twisted – Python Network Application Framework Python的网络应用程序框架
TurboGears – 另一个Web应用快速开发框架
Bit Torrent – 著名的BT下载工具
更多python的著名应用可以参看该地址:http://www.python.org/about/success/
Python语言资源
官方主页 :http://www.python.org/
For windows的 python解释器 (包括tkInterGUI开发环境,一个简单的IDE,完整广泛的英文文档)9MB:http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi
一份不错的python中文教程 :http://www.woodpecker.org.cn/obp/diveintopython-zh-5.4/zh-cn/dist/html/toc/index.html 该站致力于python研究,站内还有大量优秀教材下载。
python中文社区 :http://python.cn/ 国内python大牛尽会于此
http://www.pythonet.cn – python 中文手册
ChinaUNIX论坛区的python版 http://bbs.chinaunix.net/forum-55-1.html 基本可以认为是国内论坛中python水平最高的
一本最佳的python入门书籍 (英文)http://china-pub.shop.eol.cn/computers/common/info.asp?id=25523
一个很好的开源pythonIDE http://stani.be/python/spe/blog/
Python的库
由于设计者和开源社区的共同努力,在python中有大量优秀的库可以被直接调用以高效地完成不同需求的工作。这里列举一些常见常用的库:
Tkinter———— Python默认的图形界面接口。
Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的,目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开发。Perl、Scheme等语言也利用Tk库进行GUI开发。Tkinter是跨平台,在各种平台下都能使用。
Python Imaging Library(PIL)————python提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。
Pmw(Python megawidgets)Python超级GUI组件集————一个在python中利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。
PyXML———— 用Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容:
xmlproc: 一个符合规范的XML解析器。
Expat: 一个快速的,非验证的XML解析器。 还有其他
和他同级别的还有 PyHtml PySGML
PyGame———— 用于多媒体开发和游戏软件开发的模块。
PyOpenGL———— 模块封装了“OpenGL应用程序编程接口”,通过该模块python程序员可在程序中集成2D和3D的图形。
NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很明显。NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具。
MySQLdb模块———— 用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。
PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop
PyQt ———— 用于python的Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是Scintillar编辑器类的Qt接口。
PyMedia ———— 用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。
Psyco ———— 一个Python代码加速度器,可使Python代码的执行速度提高到与编译语言一样的水平。
Python-ldap ———— 提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x。
smtplib模块 ———— 发送电子邮件。
ftplib模块 ———— 定义了FTP类和一些方法,用以进行客户端的ftp编程。我们可用python编写一个自己的ftp客户端程序,用于下载文件或镜像站点。如果想了解ftp协议的详细内容,请参考RFC959。
xmpppy模块 ———— Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说,我们可以通过该模块与Jabber服务器通信,是不是很Cool。
下面这些就不详细介绍,只列出名字和功能
adodb ———— ADO数据库连接组件
bsddb3 ———— BerkeleyDB的连接组件
chardet ———— 编码检测
Cheetah ———— 构建和扩充任何种类的基于文本的内容
cherrypy ———— 一个WEB framework
ctypes ———— 用来调用动态链接库
Cx-oracle ———— 连接oracle的工具
DBUtils ———— 数据库连接池
django ———— 一个WEB framework
DPKT ———— raw-scoket网络编程
docutils ———— 用来写文档的
dpkt ———— 数据包的解包和组包
feedparser ———— rss解析
Kodos ———— 正则表达式调试工具
Mechanize ———— 爬虫连接网站常用
pefile ———— windows pe文件解析器
py2exe ———— 用来生成windows可执行文件
pycurl ———— URL处理工具
pydot ———— 画图的,graphiz
pyevent ———— Python的事件支持
pylint ———— 培养良好的编码习惯
Pylons ———— 又一个web framework
pypcap ———— 抓包的
pysqlite2 ———— SQLite的连接组件
python-dnet ———— 控制网络安全的其他设备
pythonwin ———— Python的Windows扩展
pywmi ———— 省了好多折腾功夫
reportlab ———— Python操作PDF的Libary。
scapy ———— 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”
scons ———— 项目构建工具,写好了模板用起来还是很方便的
sendpkt ———— Python发包
setuptools ———— 一套python包管理机制
simplejson ———— JSON的支持
sqlalchemy ———— SQL数据库连接池
SQLObject ———— 数据库连接池
twisted ———— 巨无霸的网络编程框架
winpdb ———— 自己的程序或者用别的库不太明白的时候就靠它了
wxPython ———— GUI编程框架,熟悉MFC的人会非常喜欢,简直是同一架构
除此之外还有很多,根本无法完全列举。
开源社区的工作已经完成到这样的程度,基本上各种常见的编程需求都已经有非常成熟稳定高速的模块来实现,你所需要做的,只是去阅读文档然后把它找出来。
欢迎大家光临python中国进行交流
一切关于python教程都在”python中国”
http://www.okpython.com
python资源:
老黄纸条箱(黄冬)
网址:http://blog.opensource.org.cn/hdcola/
Limodou的学习笔记(木头)
网址:http://blog.donews.com/limodou/
http://limodou.javaeye.com/
邱英波
http://www.dup2.org/blog
肥三的专栏——热酷网CTO梁冰鸿
网址:http://blog.csdn.net/FeiSan
社区/论坛
灵蛇网:http://bbs.pythonid.com/
Python中文社区:http://www.pythonbbs.cn/
http://bbs.chinaunix.net/thread-1164933-1-1.html

参考资料:
1.http://www.python.org/ python.org – Python 的官方网站
2.http://www.okpython.com/ —python中文官方站
3.http://python.cn/ – Python 中文社区
4.http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython – Python For Dot Net 的网站
5.http://www.tiobe.com/index.htm?tiobe_index 程序设计语言排名
6.http://www.pythonet.cn – python入门教程
7.http://groups.google.com/group/python-cn?hl=zh-CN Python中文用户组
8.http://www.woodpecker.org.cn/ 啄木鸟Python wiki 社区
9.中文书籍:
10.《Python源码剖析–深度探索动态语言核心技术》
11.【作 者】陈儒
12.【出 版 社】 电子工业出版社
13.【书 号】 9787121068744
14.【出版日期】 2008 年6月
15.【开 本】 16开 【页 码】 480
16.【版 次】1-1
17. http://www.china-pub.com/39994
18.《Python网络编程基础》http://www.china-pub.com/34826
19.外文书籍:
20.《CORE PYTHON PROGRAMMING》
21.《Learning Python》
22.《BEGINNING PYTHON》

Bookmark and Share

基于 Django 框架的敏捷 Web 开发(转)

This item was filled under [ 一步一步学习中, 易懂python ]

基于 Django 框架的敏捷 Web 开发

高 昂 (gaoang@lreis.ac.cn), 博士生, 中国科学院地理科学与资源研究所

2007 年 8 月 31 日

自分层结构的 Web 设计理念普及以来,选择适合的开发框架无疑是项目成功的关键。在动态语言领域,Python、Ruby、Groovy 等语言在 Web 开发中的应用日益广泛。刚刚度过两周年生日的 Python 语言 Web 框架 Django,以其新颖简洁的开发模式和巨大的发展潜力,逐渐赢得大量开发者的青睐。本文通过完整的代码示例,详细叙述 Django框架应用于 Web 开发的整个流程,并帮助开发者了解 Django 框架所带来的高效与便捷。

前言

传统 Web 开发方式常常需要编写繁琐乏味的重复性代码,不仅页面表现与逻辑实现的代码混杂在一起,而且代码编写效率不高。对于开发者来说,选择一个功能强大并且操作简洁的开发框架来辅助完成繁杂的编码工作,将会对开发效率的提升起到很大帮助。幸运的是,这样的开发框架并不少见,需要做的仅是从中选出恰恰为开发者量身打造的那款Web框架。

自从基于 MVC 分层结构的 Web 设计理念普及以来,选择适合的开发框架无疑是项目成功的关键性因素。无论是 Struts、Spring 或是其他 Web 框架的出现,目的都是为帮助开发者把所有的编码工作打理的井井有条、赏心悦目。在动态语言领域,Python、Ruby、Groovy 等语言在 Web 开发中也逐渐发展壮大,掀起一浪接一浪的开发热潮。面对 Ruby on Rails 渐渐深入人心的宣传攻势和火热势头,更为成熟且不乏优秀程序员的Python 社区也纷纷推出欲与之抗衡的Web开发框架。在对 Python 旗下的开发框架经过一番取舍比较之后,笔者选择了 Python 框架 Django 作为 Web 开发框架的首选,究其缘由,就是看中了 Django 新颖简洁的开发模式和巨大的发展潜力。

在下面的章节里,将通过一个完整的 Django 框架 Web 开发示例,详细讲解开发过程中 MVC 各层次代码编写过程中所需的各种要素与资源,通过实例体验 Django 为 Web开发者带来的高效与便捷。

细说Django

Django 是应用于 Web 开发的高级动态语言框架,最初起源于美国芝加哥的 Python 用户组,具有新闻从业背景的 Adrian Holovaty 是 Django 框架的主要开发者。在 Adrian 的带领下,Django 小组致力于为 Web 开发者贡献一款高效完美的Python 开发框架,并且在 BSD 开放源代码协议许可下授权给开发者自由使用。

Django 拥有完善的模板机制、对象关系映射机制以及用于动态创建后台管理界面的功能,利用 Django,可以快速设计和开发具有 MVC 层次的 Web 应用。为了打消开发者选用 Django 框架时的疑虑,首先分析一下 Django 引人注目的特性。在实体映射方面,Django 的对象相关映射机制帮助开发者在 Python 类中灵活定义数据模型,并且Django 具有功能丰富的动态数据库访问 API,可以大幅度简化书写 SQL 语句的繁杂工作。同时 Django 支持包括 Postgresql,MySql,Sqlite,Oracle 在内的多种后台数据库。Django 的 URL 分发设计的十分简洁美观,不会在链接中产生一大串杂乱且难以理解的字符。使用 Django 可扩展的内置模板,可以将模型层、控制层与页面模板完全独立开来进行编码。Django 还具有自己的 Cache 系统,如果需要,也可以根据开发者的要求嵌套其他的 Cache 框架。

起程前的准备

即使是对 Python 语言还不太熟悉,Django 开发的起步过程对于新手来说也并不复杂,通过使用 Django 框架完成下面的 Web 应用开发,可以在过程的每个步骤之中体会到 Django 框架赋予开发者的敏捷与自由。

在开始之前,首先要配置好Python和Django的开发环境,下面的示例将在Windows操作系统下进行,与Linux/Unix操作系统环境下的开发过程相比,仅在环境变量配置等方面略有不同。目前Python的最新版本是2.5.1,在官方站点Python.org下载安装包后搭建好Python的编译运行环境,接下来还需要把Python的安装路径添加在系统环境变量path里面,以便在命令行下使用Python进行编译及运行。

Django目前的最新发行版本是0.96版,其压缩包可以在官方站点djangoproject.com下载。解压后进入Django目录,在命令行里执行python setup.py install,这样Django就会作为第三方模块被安装在Python的site-packages目录中,然后把Django中bin目录的路径添加到环境变量path里面,这样在命令行里就可以方便的使用Django提供的各种指令。

开始Django的旅程

在下面的步骤里,将会利用Django框架实现一个完整小巧的Web应用程序。应用实例将创建实现一个新闻公告牌,用户可以从后台添加新闻分类和条目,然后在前端页面中显示新闻的统计信息。在应用的实现过程中,将会逐步介绍Django的开发方式及其带来的快捷体验。

为帮助开发者实现不同的功能,Django为我们提供了众多的开发指令,大部分繁琐的操作都被Django集成在简洁的命令行提示符中实现。现在打开命令提示符,进入到想要创建应用的目录后键入django-admin.py startproject news命令,调用Django的控制台命令新建一个名为news的工程,与此同时Django还在新创建的news文件夹下生成以下四个分工不同的文件。

* __init__.py
文件__init__.py可以向Python编译器表明当前文件夹下的内容是Python工程模块。
* 2.manage.py
manage.py是Python脚本文件,与Django的命令行工具django-admin.py配合,可以对建立的工程进行管理配置。
* settings.py
这是Django工程的配置文件,与工程相关的工程模块和数据库全局配置信息都在settings.py中设置。
* urls.py
文件urls.py负责配置URL的地址映射以及管理URL的地址格式。

当新的工程建立好之后,假如迫不及待就想知道新建工程的模样,Django已经为你准备好一款轻量级的Web服务器以便在开发过程中随时测试使用。开发者只需在命令提示符下进入工程目录,键入命令manage.py runserver,就可以启动Web服务器来测试新建立的工程,如果启动没有错误,将可以看到下面这样的提示信息:“Development server is running at http://127.0.0.1:8000/” 表示当前工程已经可以通过本机的8000端口访问。通过浏览器打开上述地址,如图1所示的Django项目初始页面将会出现在读者面前。

图 1. Django项目初始页面
Django项目初始页面

在命令行里使用Ctrl+Break或Ctrl+C的组合键可以停止runserver命令启动的Web服务器。当然,Django自带的Web服务器一般只是在开发测试的过程中使用,当Django工程真正发布时,可以通过加载mod_python.so模块把Django应用部署在Apache上,以方便Web访问的管理和配置。

Django的模型定义

在工程建立好之后,接下来就可以编写Django的应用模块。键入命令python manage.py startapp article,命令会在当前工程下生成一个名为article的模块,目录下除了标识Python模块的__init__.py文件,还有额外的两个文件models.py和views.py。

在传统的Web的开发中,很大的一部分工作量被消耗在数据库中创建需要的数据表和设置表字段上,而Django为此提供了轻量级的解决方案。借助Django内部的对象关系映射机制,可以用Python语言实现对数据库表中的实体进行操作,实体模型的描述需要在文件models.py中配置。

在当前的工程中,需要有两个 Models模型,分别对应List表和Item表,用来存储新闻的分类和新闻的条目,每个Item项都会有一个外键来标记文章的归属分类。下面打开 Django创建的models.py文件,按照文件注释中提示的模块添加位置,编写如下的代码:

清单 1. models.py文件模型定义

class List(models.Model):
title = models.CharField(maxlength=250, unique=True)
def __str__(self):
return self.title
class Meta:
ordering = ['title']
class Admin:
pass

上面这段Python代码定义了存储新闻分类的List数据表,上述模型中的定义会被Django转换成与数据库直接交互的结构化查询语言来建立数据表,即创建一个名为List的表格,表格内的两个字段分别是Django自动生成的整型主键id和最大宽度为250个字符的VARCHAR类型字段title,并且在title字段上定义了唯一性约束,来保证新闻分类不会有完全相同的名称。

在List类文件里还定义了函数__str__(),作用是返回self字符串表示的title字段。而在类Meta中,设置了List表格按照title字母顺序的排序方式。在类 Admin的设置中,允许Django针对当前的Models模型自动生成Django超级用户的后台管理入口,关键词pass设定Django将按照默认方式生成后台管理界面。这一部分在稍后的章节可以看到,由此也可以体会到Django带来的独特魅力。下面再来添加新闻条目Item对应的Models 模型,代码如下面所示:

清单 2. 添加新闻条目Models模型

import datetime
class Item(models.Model):
title = models.CharField(maxlength=250)
created_date = models.DateTimeField(default=datetime.datetime.now)
completed = models.BooleanField(default=False)
article_list = models.ForeignKey(List)
def __str__(self):
return self.title
class Meta:
ordering = ['-created_date', 'title']
class Admin:
pass

Item 数据表对应的Models代码稍微复杂一些,但并不晦涩。代码里首先引入datetime类型,用于定义表示文章创建日期的created_date字段,并且通过Python的标准函数datetime.datetime.now返回系统当前日期来设置字段的默认值。在记录排序的ordering设置中,符号“-”表示按照日期的倒序进行排列,如果文章创建日期相同,则再按照title的字母序正序排列。

到此为止,应用中模型部分需要定义的两个数据表都已经创建完毕,下一步的工作是让Django部署并在数据库中生成已经写好的Models模型。

Django模块的部署

在 Django中,与工程全局相关的设置都需要在配置文件settings.py中添加。笔者使用MySQL作为后台数据库,并且已经在MySQL中创建名为django_news的数据库。则需要在settings.py文件中的相应位置设定DATABASE_ENGINE = “mysql” 以及 DATABASE_NAME = “django_news”。

这里要注意的是,如果使用SQLite数据库,Django可以根据数据库的名称自动在SQLite中创建新的数据库,而在MySQL、PostgreSQL或其他的数据库中,则需要先创建与设定名称对应的数据库。在使用MySQL数据库时,需要额外安装MySQL的Python链接库MySQLdb-1.2.1,这个模块可以在站点http://sourceforge.net/projects/mysql-python/下载,目前支持的Python版本为2.4,所以使用MySQL数据库需要在2.4版本的Python环境来开发运行。

接下来的DATABASE_USER和DATABASE_PASSWORD两项内容则需要用户根据本机设置填写访问数据库的用户名和密码。如果数据库安装在其他机器上或者更改了数据库的监听端口,则还需要设置DATABASE_HOST地址和DATABASE_PORT项。笔者使用的Mysql数据库设置为:

DATABASE_USER = ‘django’
DATABASE_PASSWORD = ‘django_password’

为了使Django识别开发者添加的应用模块,在settings.py文件的INSTALLED_APPS部分中,需要定义Django工程加载的应用列表。默认情况下,列表中已经添加了Django工程运行所需的部分自带模块,我们还需要把刚才编写好的应用模块news.article加入其中,同时添加Django自带的django.contrib.admin应用模块,修改好的代码如下所示:

清单 3. 添加所需的模块

INSTALLED_APPS = (
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘django.contrib.admin’,
‘news.article’,
)

添加admin模块后还不能立即使用Django的admin后台管理界面,需要打开News工程根目录下的urls.py文件,将“# Uncomment this for admin:”后面的#注释去掉,使得Django针对管理界面的URL转向“(r’^admin/’, include(‘django.contrib.admin.urls’)),”可用,这样访问admin模块时Django就可以顺利解析访问地址并转向后台管理界面。

当配置文件的改动完成之后,就可以在News工程的命令提示符下执行manage.py syncdb指令。Django会根据模型的定义自动完成ORM的数据库映射工作,屏蔽了底层数据库细节和SQL查询的编写。

展示Django魅力的时刻已经来临,Django框架将让开发者开始神奇的体验。随着命令执行后的滚动提示,Django已经根据我们刚才在models 里定义的映射文件,自动在数据库里创建好对应的表和字段。命令执行的同时会提示用户创建“superuser”账户,来登陆Django自动创建好的后台管理界面对模型进行管理。指令执行时同步更新数据库表的命令提示如图2所示:

图 2. Django指令执行时同步更新数据库表
Django指令执行时同步更新数据库表

维持学习动力的最好方式就是随时都可以找到一点小小的成就感,下面来看一下这些步骤完成了哪些工作。再次使用命令manage.py runserver来启动Django自带的Web服务器后,在浏览器中访问地址http://127.0.0.1:8000/admin/,使用刚才创建的superuser用户的账号和密码登陆,如图3所示漂亮的Django后台管理界面就出现在眼前。

图 3. Django根据模型自动生成的后台管理界面
Django根据模型自动生成的后台管理界面

在 admin管理界面中,显示了应用中已经定义的各个models模块,当点击查看时,则会显示models中存在的数据库对象列表。Django提供的后台管理界面方便用户直接更改或添加数据库字段,下面我们点击”Lists”项旁边的“Add”来添加新的新闻分类。在title字段中键入“Sports News”或其他你喜欢的分类后保存。然后在”Items”项中点击“Add”,填入新闻的第一个条目,每个Item条目都对应List中的一个分类项,添加Item的界面如图4所示,由于设置了表之间的关联,Django的Item管理界面中会为已添加List分类自动生成内容的下拉选项。

图 4. 添加新闻条目的界面
添加新闻条目的界面

Django便捷的后台管理界面为Web开发人员节省了大量的时间,目前使用到的只是Django默认的后台管理方式,开发者还可以参考Django提供的用户手册对后台进行进一步的定制和个性化。

实现Django的控制层和表现层

进行到这里,Django工程中的模型层已经处理完成,下面要做的就是如何用代码来与models中定义的字段进行交互,这就是Django中的View部分。与传统MVC分层定义略有不同的是,在Django中,View的功能是对页面请求进行响应和逻辑控制,而页面内容的表示则由Django的 Template模板来完成。我们可以把Django的View理解为实现各种功能的Python函数,View负责接受URL配置文件urls.py中定义的URL转发并响应处理,当Django收到请求之后调用相应的View函数来完成功能,article模块中的views.py文件代码定义如下:

清单 4. views.py代码定义

from django.shortcuts import render_to_response
from news.article.models import List

def news_report(request):
article_listing = []
for article_list in List.objects.all():
article_dict = {}
article_dict['news_object'] = article_list
article_dict['item_count'] = article_list.item_set.count()
article_dict['items_title'] = article_list.title
article_dict['items_complete'] = article_list.item_set.filter(completed=True).count()
article_dict['percent_complete'] =
int(float(article_dict['items_complete']) / article_dict['item_count'] * 100)
article_listing.append(article_dict)
return render_to_response(‘news_report.html’, { ‘article_listing’: article_listing })

这是一段简洁的Python代码,让我们看看在这段代码里面Django的函数做了哪些工作吧:

* List.objects.all方法返回news列表中所有的记录项,Django可以根据后台数据库转换成相应的SQL语句,在后台数据库中执行并返回查询结果。
* 每一条article文章都有item_set属性,代表news新闻条目中的每一个item项。如果需要设置查询条件,也可以使用item_set.filter方法来返回符合特定要求的item项。
* render_to_response函数返回浏览器指定的HTML页面,页面为Django的Template模板,负责展示被请求的页面内容。

在 view部分的代码中,已经指定了页面显示模板为news_report.html。其实,在Django工程中创建模板是一件非常方便的事情,下面要在 article目录内创建这个模板页面,首先新建一个名为templates的文件夹,然后在这个模板目录里创建所需的news_report.html 模板文件,模板的代码如下:

清单 5. news_report模板代码

新闻统计列表

新闻统计列表

{% for list_dict in article_listing %}

  • 新闻的分类: {{ list_dict.items_title }}
  • 新闻的数目: {{ list_dict.item_count }}
  • 已发布的新闻数目:
    {{ list_dict.items_complete }} ({{ list_dict.percent_complete }}%)

{% endfor %}
一般来说,Django的模板代码和普通的HTML代码看上去没有太大差别,只是添加了Django特定的模板标记,这些标记允许开发者为Django模板添加页面逻辑,比方说将views.py中render_to_response函数返回的数据库结果集显示在页面中,Django特有的标签在模板页里以“{%”作为开始并以“%}”作为结束。嵌入Django模板的变量则以“{{”作为开始并以“}}”结束。

在上面的模板代码里面,用到了标记{% for news_dict in article_listing %}以及{% endfor %}。这样的标记告诉Django模板处理机制循环取出news中的item项输出在页面中,在for循环内部,通过article_listing的属性得到View中对应的数据项字段的值并显示每个news项的Title标题以及news中的item项数目。

当 Django的View和Template都已经准备妥当,下面仅需要几步配置来告诉Django存储工程应用的模板位置,这需要对配置文件 setting.py中的TEMPLATE_DIRS项进行设置。在本例中加入模板文件”news_report.html”的存储路径就可以让 Django把对View进行处理的结果集通过指定模板返回。按照本例应用的结构,TEMPLATE_DIRS参数的内容设置为:

‘./article/templates’,

这里不要忘记Django需要在路径的最末尾添加一个逗号。接下来仅需要设置访问article时的URL转向地址就可以。打开urls.py文件,在admin后台管理的转向地址下一行添加如下语句:

(r’^report/$’, ‘news.article.views.news_report’),

在这里语段的最末尾,也需要有逗号标记段落的结束。在这里可以看到,Django的URL转发设计的非常简洁,在配置文件urls.py中对应于view的转发请求都由两部分组成,第一部分遵循正则表达式指定相匹配的URL地址,第二部分是对应在View里面处理转发请求的函数。

完成了这些步骤,就可以在命令提示符下再次启动Django服务器,看一下上述努力的成果了,在浏览器中打开链接http://127.0.0.1:8000/report/,将会看到新闻列表的返回界面。页面中显示了数据库中已添加所有新闻的分类统计信息。值得一提的是,Django模板支持多层嵌套,并且每一层都可以使用DIV+CSS方式完成布局,可以方便的让站点页面遵循统一风格,看起来美观大方。

在上述整个过程中,对使用Django进行Web开发进行了初步的介绍。在应用中写的Python代码不过几十行,比较起来其他的开发语言,Django显得非常便捷实用,最后再来回顾一下Django都帮助我们做了哪些工作吧:

* 通过Django的对象关系映射模型建立了存储新闻分类以及新闻项的两张数据表,并用syncdb命令同步更新到数据库。
* 借助Django的管理功能在应用中生成了一个漂亮实用的后台管理界面。
* 利用Django函数和标签编写了view功能模块以及显示数据结果的Template模板。

结束语

Django 开发框架的出现,让本例所有的这些工作变得简洁有序、赏心悦目。随着Django开发框架的不断发展,更多新的特性将逐步被添加到框架体系中来。可以不夸张的说,Django已经从ROR的潜在竞争者,逐渐成长为可以与之针锋相对的Python框架。如果说与Ruby框架ROR的差距,或许Django目前最缺少的还是ROR那庞大的用户群体。

如果看完这篇文章,读者打算一步一步进入Django的精彩世界,可以在Django官方站点www.djangoproject.com上阅读更多的开发文档、订阅Google Group上的Django邮件讨论组,或者跟随Django官方的教程指南进行学习,开始一次让思想自由翱翔的旅程,相信在这个过程中收获的不仅仅是使用Django开发的新奇体验。

希望有更多的读者来使用Django框架,希望有更多的人来一起来关注Django的发展,甚至参与到Django的项目开发当中,为开源的社区贡献一份力量。期待Django快速发展的明天、期待Python实现的Rails框架将会有绚丽的未来!

Bookmark and Share
Tagged with: [ ]
Page 5 of 46« First...«34567»102030...Last »