作者存档: fred - 第11页

debian(linux) 配置 apache+django+mysql

蓝色字体为本人注解

原文出自:How To Install Django On Debian Etch (Apache2/mod_python)

1 安装 MySQL

Django 可以使用多种类型的数据库, 例如:. PostgreSQL, MySQL, SQLite, etc. 如果你打算使用mysql,可以按照一下步骤操作:

apt-get install mysql-server mysql-client #debian的apt工具真牛!

我们希望mysql可以通过多种接口连接, 不单单localhost方式链接, t要实现这点,我们需要修改/etc/mysql/my.cnf 把里面的bind-address = 127.0.0.1注释掉:

vi /etc/mysql/my.cnf

[...]# Instead of skip-networking the default is now to listen only on# localhost which is more compatible and is not less secure.#bind-address           = 127.0.0.1[...]

#我这样做了,但是感觉没什么用,局域网内的其他机子还是不能访问

然后,重启mysql:

/etc/init.d/mysql restart

现在,我们修改下网络设置

netstat -tap | grep mysql

输出应该是这样的:

server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 3085/mysqld
server1:~#

继续

mysql -u root password yourrootsqlpassword
mysql -h server1.example.com -u root password yourrootsqlpassword

给root用户设置一个密码 (不然任何用户都能登录你的mysql数据库了!)

2 安装 Apache 和 mod_python

如果apache和mod_python还没有安装到服务器上去,你可以安装下面步骤进行安装:

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-python

3 安装 Django

#前提是python要安装,版本要和django对应,debian默认安装的是python2.4,即使安装了python2.5,对应的软链接还是指向python2.4的,即使修改了也没用。这里我的解决方法是,升级debian

apt-get update

apt-get dist-upgrade

之后继续安装django就可以了

为了同时安装django和python_mysqldb,我们运行下面命令:

apt-get install python-django python-mysqldb

4 设置Apache

#这里是关键中的关键

使用 /var/www 作为apache的根目录(#默认就是如此,不用设置)

使用/etc/apache2/sites-available/default 做虚拟目录. 调整你的环境. #这段翻译不好,简单的说就是设置下apache的虚拟路径和主路径,apache相关设置资料中文一大堆

在设置apache之前, 我们先创建一个django项目(e.g. called mysite) (see http://www.djangoproject.com/documentation/tutorial01/). 出去安全考虑,我新建的项目不安装到apache更根目录下去 /var/www (e.g. in /home/mycode):

mkdir /home/mycode #新建一个目录
cd /home/mycode #打开刚才创建的目录
/usr/share/python-support/python-django/django/bin/django-admin.py startproject mysite #在打开的目录下创建一个django项目

这里会创建一个目录 /home/mycode/mysite with 一些python文件在里面

现在,mysite这个项目我们已经创建好了, 我们继续设置apache. 我设置我的虚拟目录,在/etc/apache2/sites-available/default<VirtualHost … >…</VirtualHost> 标签之间设置vi /etc/apache2/sites-available/default

[...]<Location "/mysite">    SetHandler python-program    PythonHandler django.core.handlers.modpython    SetEnv DJANGO_SETTINGS_MODULE mysite.settings    PythonDebug On    PythonPath "['/home/mycode'] + sys.path"</Location>[...]

重启apache

/etc/init.d/apache2 restart

我们可以看到打开的效果如下:

5 在django项目里设置mysql的链接

#不翻译这段废话了,看下面的就知道了

vi /home/mycode/mysite/settings.py

[...]DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.DATABASE_NAME = 'mysite'             # Or path to database file if using sqlite3.DATABASE_USER = 'mysiteadmin'             # Not used with sqlite3.DATABASE_PASSWORD = 'mysiteadmin_password'         # Not used with sqlite3.DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.[...]

原文讲的很清晰,可以我配置起来还是有点问题,第一次成功,后面就一直失败,莫名其妙~~

目前我还未解决一下问题,望高手指教:

1、mysql对外开发链接,不能成功,期待解决方案

2、mysql中文问题,即使我都设置了utf8 还是有乱码现象

3、暂时未发现,但一定还有问题

本人无论E文还是python水平都有限,望大家见谅。算是为python&django在中国推广做点贡献!

如何在python中使用*args,**kwargs (How to use *args and **kwargs in Python)

原文出自:How to use *args and **kwargs in Python

作者:Sofeng

一次公司的交流会上,讨论了这个问题,为加深映像和锻炼英语,将原文翻译了下!

如何在python中使用可变长度的参数.

这个特殊的语法, *args and **kwargs 在一个方法中,是为了传递多个可变的参数。单个星号的形式(*args)是为了传递一个可变长度的list数据,而双星的形式(**kwargs) 是为了传递多个可变的字典数据。这里有个例子讲了如何使用这些参数. 这个例子,传递一个确定的参数,和多个可变长度的参数:

def test_var_args(farg, *args):
print “formal arg:”, farg
for arg in args:
print “another arg:”, arg

test_var_args(1, “two”, 3)

结果:

formal arg: 1another arg: twoanother arg: 3

这个例子是讲如何传递一个可变字典, 一个确定参数和多个可变字典参数

def test_var_kwargs(farg, **kwargs):
print “formal arg:”, farg
for key in kwargs:
print “another keyword arg: %s: %s % (key, kwargs[key])

test_var_kwargs(farg=1, myarg2=“two”, myarg3=3)

结果:

formal arg: 1another keyword arg: myarg2: twoanother keyword arg: myarg3: 3

在方法里使用 *args**kwargs

def test_var_args_call(arg1, arg2, arg3):    print "arg1:", arg1    print "arg2:", arg2    print "arg3:", arg3args = (1, "two", 3)test_var_args_call(*args)

结果:

arg1: 1arg2: twoarg3: 3

这个例子是讲如何在方法里调用字典:

def test_var_args_call(arg1, arg2, arg3):    print "arg1:", arg1    print "arg2:", arg2    print "arg3:", arg3kwargs = {"arg3": 3, "arg2": "two", "arg1": 1}test_var_args_call(**kwargs)

Results:

arg1: 1arg2: twoarg3: 3

当然, 这些语法可以同时在python里面使用,但是我(作者)不建议这么做.

详见:Section 5.3.4 in the Python Reference Manual

参考:Core Python Programming, Second Edition, Section 11.6

自己的总结:

*args 传递多个普通参数

**kwargs 传递多个字典参数

百度竟然出了suggest了~

N久没用百度了~~当然不错了空间外!~

今天无意中发现,终于才发现百度竟然也学期谷歌支持suggest了!

说实在,百度实在太令人失望了!不管搜索引擎,还是产品做得都差强人意。

几点百度空间意见:

1、文章限定的数量太少,贴些代码就用完了

2、不支持高亮代码显示

3、web2.0内容太过于缺乏,相比网易的空间已经全部支持ajax效果。

产品方面,希望百度能多出些公益方面的,实用点的产品,现在都是写老掉牙的。也太。。。。

随便写点,抱怨下!!!希望百度能争气点,毕竟也是中国起家的外国公司~~

Django Admin Inreface-s Note (admin.py)

#coding=utf8
from django.contrib import admin
#from django.contrib.admin.widgets import AdminTimeWidget
#from django.db import models

from myhome.address.models import Address

#管理界面高级设置
class AddressAdmin(admin.ModelAdmin):
#列表显示字段
list_display    = (‘name’, ‘gender’, ‘telphone’, ‘mobile’,‘colored_name’)

#date_hierarchy = "pub_date" #按时间排序

#设置修改链接所在的字段,默认是第一个字段,一旦设定,默认字段将被替换
list_display_links = (‘telphone’, ‘mobile’)

#设置过滤选项,默认位于admin界面的右边
list_filter = (‘gender’,)

#设置搜索范围,内容是char和text类型字段,对字段可用^、=、@来精确搜索范围
search_fields = [‘name’, ‘gender’, ‘telphone’, ‘mobile’]

#设置分页数目,默认是100分页
list_per_page = 5

#高级字段编辑
fieldsets = (
(‘基本资料’,
{‘fields’🙁‘name’, ‘gender’,)}),
(‘移动电话’,{
‘classes’🙁‘collapse’),
‘fields’: (‘mobile’,)}),
(‘联系电话’,{
‘fields’🙁‘telphone’,)})
)

#exclude = (‘telphone’,) #排除可编辑字段

#filter_horizontal = (‘manytomany’,)#水平列表

#VERTICAL ,设置单选效果,横排和竖排两种格式,该字段必须是一个list或者tupe字段类型
radio_fields = {"gender": admin.HORIZONTAL}

#raw_id_fields = (‘gender’,)

save_as = True

#是否在admin 界面顶部也增加辅助添加、删除、按钮
save_on_top = False

#覆盖admin界面默认字段的widget样式,不能改变有关联的字段,有关联的字段会采用默认类似
#     formfield_overrides = {
#         models.TextField: {‘widget’: AdminTimeWidget},
#     }

admin.site.register(Address, AddressAdmin)#注册接口

Django Admin Inreface-s Note (Model.py)

#coding=utf8
from django.db import models

CHOICES = ((‘M’,‘男’),(‘F’,‘女’))

class Address(models.Model):
name = models.CharField(‘姓名’,max_length=6,unique=True)
gender = models.CharField(‘性别’,choices=CHOICES,max_length=1)
telphone = models.CharField(‘电话’,max_length=20)
mobile = models.CharField(‘手机’,max_length=11)

def colored_name(self):
return ‘<span style="color: red;">%s %s</span>’ % ( self.telphone, self.mobile)
colored_name.allow_tags = True#采用HTML标记作为list_play输出必须要设置allow_tags = True
colored_name.admin_order_field = ‘name’#在这里可以显示的为一个方法变量做排序,排序对象必须是数据库已有字段

def __unicode__(self):
return self.name

Django1.0官方教程(中文)(转载)

不知道是不是这位仁兄所创,姑且转载之,非常感谢他分享!

1、Django 1.0 中文文档—–指导 第一部分

2、Django 1.0 中文文档—–指导 第二部分 自动生成管理工具

3、Django 1.0 中文文档—–指导 第三部分 发布视图

4、Django 1.0 中文文档—–指导 第四部分 编写表单

此外推荐一本提高书!《Django Book》 中文版地址:http://djangobook.py3k.cn/

总结下python学习心得

最近按经理要求开始抽空学习python~不过估计习惯了java严谨的书写风格,对于学习python感觉很滑手,无从学起,好在经理推荐了本好书《A Byte of Python》中文名:《简明 Python 教程》

学了2天终于把书上的一个例子写出来了,和大家分享下心得。

例子是书上一个备份程序,但是做了适当修改

1、rar代替zip压缩(不过win环境下使用rar要设置path,这指的是绿色版用户)

2、windows环境代替linux环境

3、python3.0替代python2.x

源码如下:

import os
				import time

				source = [r'D:my_examplepython',r'D:my_exampleOSGI']      #需要备份文件的列表
				target_dir = r'D:\'     #指定备份文件存放所在地

				today = target_dir + time.strftime("%Y%m%d")
				now = time.strftime("H%M%S")

				comm = input("Please enter your commit:")   #用户可以输入备份文件注释

				if len(comm)==0:
				target = today + os.sep + now + ".rar"
				else:
				target = today + os.sep + now + "_" + comm.replace(" ","_") + ".rar"

				print("Target File is ",target)

				if not os.path.exists(today):   #备份文件按天数创建文件夹
				os.mkdir(today)
				print("Successfully created directory",today)

				rar_command = "rar a " + target + " " + " ".join(source)
				print("Rar Command is ",rar_command)

				if os.system(rar_command) ==0:   #这里就相当于在cmd下执行命令
				print("Rar Over")
				else:
				print("Rar Failed")

				print("All Back is Over")

上面的程序,暂时还没体验出python的优势,无厘头的书写风格倒是让人抓狂

 

小小总结下最近的心得!给自己打打气!   

希望能和对这条大蟒蛇感兴趣的朋友交流交流,抓住这条滑不溜丢的蛇!

人生第一个项目完成啦!

历时8个月开发(课余时间)+1周的调试,偶的第一个小项目终于完成了!

动脉商城:http://www.dongmai.net 基于Struts2+Spring+Hibernate+Sitemesh

大家来提提意见吧!由于是第一个版本问题会非常多的~

就当各位帮忙收集些bug了!

中国对互联网的监管是对还是错?(我的一点看法)

话题来自好友的文章:一个故事?不!是一个现实的社会

我所了解的有限,言语间可能存在矛盾或和事实不相符合,请予以理解

我的一点看法,ZG对互联网的控制和管理是不得已而为之的事情,究其原因要牵扯的比较多了。

1、ZG5000年的历史证明,中国人对于舆论是很重视的,而网络恰恰是很难管理的一块内容,不可否认网络能带来无与伦比的魅力和咨询,这些都是这个社会所必须的,但是带来的负面影响还是不小。

2、有个观点很重要,那就是西方资本主义国家无时无刻不想灭亡中国,这不是无稽之谈,社会性质的不同决定的。

目前而言除了台湾,军事上中国已经被“美”军包围,台湾问题的军事意义远远大于民族意义,中国的经济一定程度上是可以影响世界经济了,这种时候发动战争机会不大,但是内部分裂缺极有可能。读读中国的历史,不难发现,中国历史完全是一部内战史。

总结一句话,只能说是好心办坏事,怀就坏在办事的机构处理的不好!拿北京奥运会那次CSDN就因为盗版被封杀了,这管的也太。。。。

呵呵,老蒋,看到了别骂我哦!

我和IE离婚了!

如题!下面的现象用贯IE的朋友应该常遇到吧!

1、打开一个IE~~CPU总突然升到100%~~

2、开个界面总要N久,打开了滚轴动一下页面就没了!!

3、和别的程序一起打开的话~~电脑配置差点的话会崩溃~~无语了!!

因为以上原因。自IE升到6.0以上后就一直没用过~~“原装的”~~~一直用遨游~·虽然也是IE核心的~但优化的不错·~但是问题还是很多~~特别对我这种配置较差的电脑来说,很是不理想!

不过好在市面上的浏览器不单单IE一家~~火狐、Opera、Safari。。不过用了效果都不咋地!消耗资源还是比较严重的~~

不久前Google Chrome测试版一出来,我就去适用了·~但是也感觉打开有些网页会卡死,估计是脚本处理的不好!

不过过了几个月,当我在去下载使用Google Chrome的时候·~脚本卡死的问题没有了~·那一切就完美了~~

1、低内存 ,主进程20M以内~~IE8的没60M不现实!

2、多进程 ,突破浏览器的常规,真正的实现了!

3、程序员开发工具(我的最爱)

4、开源

当然Google Chrome还有很多不足~·就当百度空间的文章编辑器~~目前就不兼容Google Chrome的~·不过好在没有错误~~ 期待Google Chrome正式版的推出。。。。。。。

据传Google Chrome和遨游合作~~希望能如愿~~结合遨游的人性化操作那就太棒了~~