1.安装必要软件包
yum -y install make gcc* gcc-c++ libjpeg-devel libpng-devel zlib-devel tcl-devel freetype-devel libevent-devel openssl-devel db4-devel curl-devel pcre-devel ncurses-devel readline-devel sqlite-devel ntp iptraf sysstat screen subversion wget bzip2 nfs-utils vim-common autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel cmake ncurses-devel bison setuptool python-devel
2.安装django
cd /usr/local/src
wget http://pkgs.fedoraproject.org/repo/pkgs/Django/Django-1.0.2-final.tar.gz/89353e3749668778f1370d2e444f3adc/Django-1.0.2-final.tar.gz
tar fvxz Django-1.0.2-final.tar.gz
cd Django-1.0.2-final
python setup.py install
python -c "import django;print(django.get_version())"查看django版本信息
mkdir -p /data/django
3.创建项目
cd /data/django
django-admin.py startproject mysite ###创建项目
ls mysite
__init__.py:python特性,可以是空文件,只是表明这个文件夹是一个可以导入的包。
settings.py:配置文件,主要是数据库信息、加载模块的信息。
url.py:URL配置文件,指定函数与URL的映射关系。
chmod +x manage.py
4.启动服务
python manage.py runserver 0.0.0.0:88
这样就将端口修改为88,且外网也可以通过IP访问本机上的Django。
cd /usr/local/src
wget http://savory.googlecode.com/files/setuptools-0.6c9.tar.gz
tar xzvf setuptools-0.6c9.tar.gz
cd setuptools-0.6c9
python setup.py install
cd /usr/local/src
wget http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
tar -zxvf flup-1.0.2.tar.gz
cd flup-1.0.2
python setup.py install
python manage.py runfcgi method=prefork host=127.0.0.1 port=9002
5..url
Django会通过URL配置文件来查找相应的对象,URL地址使用正则表达式设置。在mysite/mysite目录下可以找到urls.py文件,它是URL配置的默认起点(也可以通过编辑settings.py中的 ROOT_URLCONF值来修改)。直接编辑urls.py
1 2 3 |
urlpatterns = patterns('', (r'^$', 'mysite.hello.index'), ) |
・r’^$’:正则,表示根目录;
・mysite.hello.index:指向mysite这个项目下的hello模块中的index函数。
剩下的就很简单了,在mysite文件夹下建立一个hello.py文件,在其中写入一个index函数:
#hello.py
from django.http import HttpResponse
def index(request):
return HttpResponse('hello, world')
刷新网站首页,看到已经输出了”hello, world”。
6. settings.py 中配置数据库
DATABASES = {
'default':{
'ENGINE':'django.db.backends.mysql', #设置为mysql数据库
'NAME':'dmyz', #mysql数据库名
'USER':'root', #mysql用户名,留空则默认为当前linux用户名
'PASSWORD':'', #mysql密码
'HOST':'', #留空默认为localhost
'PORT':'', #留空默认为3306端口
}
}
7.创建app项目
Django作为一个Web框架,目的是实现MVC的分离,它可以自行处理一些通用的操作,让开发人员可以专注于核心应用的开发。所以,现在将编写一个名为articles的应用,从mysql数据库里读取出文章作者、标题、内容。
首先建立应用,在manager.py所在目录中执行:
python manage.py startapp articles 创建app项目
运行后在项目文件夹中会增加一个article文件夹,里面有如下文件
models.py
views.py
tests.py
__init__.py
・models.py:模型文件,用 Python 类来描述数据表。
・views.py:视图文件,用来联系模型与模版,主要的业务逻辑一般都写在这里。
・tests.py:单元测试文件,Python的test功能很强大,有兴趣可以自行google,本文不讨论。
编写模型文件(article/models.py),定义用到的字段:
1 2 3 4 5 6 7 |
from django.db import models # Create your models here. class Article(models.Model): title = models.CharField(max_length=50) author = models.CharField(max_length=50) content = models.CharField(max_length=200) |
修改配置文件(settings.py)文件,告诉Django这个App是属于当前项目的。打开配置文件,在尾部找到INSTALLED_APPS元组,将articles添加进去:
1 2 3 4 5 6 7 8 9 10 11 |
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django_openid_auth', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', #…… 'articles', #加入app ) |
Django会自动在mysql数据库里创建名为article_article的表。而且,因为在INSTALLED_APPS中使用了django.contrib.auth,所以syncdb命令会要求提供一个管理员帐号和密码,用来登录Django的管理工具。
安装数据库 yum install mysql* mysql-python -y
数据库设置:
CREATE DATABASE operations;
grant all on operations.* to 'azyw'@'localhost' IDENTIFIED BY 'azyw@)!#2013YW';
flush privileges;
可以先运行manage.py sql articles命令进行测试,如果可以看到生成的sql语句,说明模型已经正常设置,可以初始化并安装:
python manage.py syncdb ##建立初始化数据库
You justinstalled Django’s auth system, which means you don’t have any superusersdefined.
Would you liketo create one now? (yes/no): yes
python manage.py sqlall articles ##打印sql语句
8.现在编辑视图(articles/views.py)文件:
1 2 3 4 5 6 7 |
# articles/views.py from django.shortcuts import render_to_response from articles.models import Article def latest_article(request): article_list = Article.objects.order_by('-id') return render_to_response('articles/article.html',{'article_list':article_list}) |
・2行:导入Django的render_to_response()函数,它用来调用模板、填充内容和返回包含内容的页面。
・3行:导入之前编写模型文件中的Article类。
・4~6行:定义一个latest_article函数,利用Article类从数据库获得数据,并按照id倒序输出。然后调用模版文件,将变量传递过去。
直接运行会报错TemplateDoesNotExist at 路径,因为还没有告诉Django,到那里去找articles/article.html文件。
编辑配置文件(settings.py),修改TEMPLATE_DIRS,设置一个模版路径,这里将模版目录直接指定在项目文件夹(mysite)中:
TEMPLATE_DIRS = (
"/var/www/mysite"
)
设置后,程序运行时会去找/var/www/mysite/articles/article.html。
如果使用过其它框架或者模板引擎,下面article.html的内容就很容易看懂了,Django在模版文件中利用相应的TAG控制传递过来的变量显示的位置:
{% for article in article_list %}
Author:{{ article.author }}
Title:{{ article.title }}
Content:{{ article.title }}
{% endfor %}
最后,修改URL配置文件,让http://127.0.0.1:8000/articles/指向视图(views.py)中定义的latest_article函数:
(r’^articles/’,‘articles.views.latest_article’),
这样所有的配置就完成了,当访问 http://127.0.0.1:8000/articles,Django会自动读取数据库中的内容,并显示在网页上了\。