Python Django Web 框架,从安装到完成 Web 站点的设计

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端口

}

}

wKioL1MER_rht3jwAAKHE0aNPYI516.jpg


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会自动读取数据库中的内容,并显示在网页上了\。



你可能感兴趣的:(Web,框架,django,python)