初次接触Django?或者网站开发?那么你来对地方了:阅读本文的可以带你快速入门。

2.1 初识Django

Django是在一个快节奏的报社环境下开发完成的,其被设计用来简单快捷地完成网站制作任务。下面是简要概述关于如何开发一个数据库驱动的Django网站应用。

本文档的目的在于给予你足够的技巧来理解Django是如何工作的,而不是参考手册--但是我们都做到了!如果你想要开始一个项目,你可以跟随这份指导或者转到详细的文档

2.1.1 设计您的模型

尽管你可以在没有数据库的情况下使用Django。当你在python代码中描述数据库设计的时候,它就伴随着对象关系型数据映射而存在。

数据模型语法提供多种方法来描述你的模型。下面是一个简单的例子,它可能存在于mysite/news/models.py这样的文件中:

from django.db import models

class Report(model.Model):
    full_name = models.CharField(max_length=70)
    #在python3中你需要使用 def __str__(self):
    def __unicode__(self):
        return self.full_name

class Article(model.Model):
    pub_date = models.DataField()
    headline = models.CharField(max_length=200)
    content = models.TextField()
    report = models.ForeignKey(Report)
    #在python3中你需要使用def __str__(self):
    def __unicode__(self):
        return self.headline

2.1.2 安装模型(生成表)

接下来运行Django通用命令来自动创建数据库表:

$python manage.py syncdb
译者注:在你项目的根目录下运行:如mysite/

syncdb命令检查你所有可用模型然后在你的数据库中创建当前不存在的表。

2.1.3 使用免费的API



【译者注:当前译文为草稿版,可能会存在少量错误,请谅解,不是很确定的地方会用'?'注明。等通篇翻译完后会做校验工作,另:当前译文中超级链接地址保留原来的官方英文版url,待通篇翻译完后将改为本译文专题中的中文指向地址。】

这里有你需要了解的所有关于Django的知识

1.1 获得帮助

遇到难题:我们很乐意帮助你!

  • 试试“疑问解答”-其中包含很多常见的问题。

  • 查找详细信息?尝试genindex,modindex或者详细内容列表

  • 搜索文档中为用户提供的邮件地址(见第十章,尚未翻译),或者直接提交你的问题

  • 通过在django协会(django IRC),或者在IRC log里搜索看是否已经有你要的答案

  • 翻阅Django问题跟踪系统上的一系列bug

1.2 第一步

如果你刚接触Django或者是个编程新手,通过阅读以下内容来入门

1.3 模型层

Django提供抽象层(models)来构造和操作你的web应用的数据库的内容。你可以通过以下内容来了解他们

1.4 视图层

Django通过视图来封装处理用户请求或者返回HTTP响应。通过以下链接找到你所需要的。

1.5 模型层

模型层提供了人性化的信息展现语法,学习这些语法如何被设计师使用以及程序员如何去扩展它:

设计师:语法概述|内置标签和过滤器|网页设计帮助|人性化

程序员:模板接口|自定义标签和过滤器

1.6 表单

Django提供了丰富的框架来帮助生成表单和操作表单数据。

1.7 开发过程

学习众多的组件和工具有助于您开发和而是Django应用:

1.8 后台管理

找到你需要知道的所有自动管理界面,这是Django非常受欢迎的特性

1.9 安全性

安全是web应用开发非常重要的话题,Django提供了很多防护工具和机制:

1.10 国际化和本地化

Django 提供健壮的国际化和本地化框架来帮助你开发多语言和地区支持的web应用:

1.11 Python兼容

1.12 Geographic框架

GeoDjango 致力于成为一个世界级的地理Web框架,其目的在于简化构建GIS Web应用和处理空间数据

1.13 常用的Web应用工具

Django提供众多的通用的web应用工具:

1.14 其他核心功能

学习Django框架其他的核心功能

1.15 Django开源项目

了解Django项目开发过程以及如何为其提供贡献:



如下,Author和Book两个model,

class Author(models.Model):    
    first_name = models.CharField(max_length=30)    
    last_name = models.CharField(max_length=40)    
    email = models.EmailField()    
        
class Book(models.Model):    
    title = models.CharField(max_length=200)    
    authors = models.ManyToManyField(Author)


6.1 从书籍出发获取作者

b = Book.objects.get(id=2) 
b.authors.all()   #查询id为2的书籍的所有作者
b.authors.filter(first_name='jack') #查询id为2的书籍的作者中 firstname是'jack'的作者

 

6.2 从作者出发获取书籍

a = Author.objects.get(id=2)  
a.book_set.all() 查询发作者表中id=2的作者的所有书籍

  

注意:当关联同一个模型的字段大于一个时,要使用related_name参数来指定表名,而6.2中的查询则可以使用a.related_name.all()来查询

一, 创建用户:


       命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';


       说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.


      例子: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';

               CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';

               CREATE USER 'pig'@'%' IDENTIFIED BY '123456';

               CREATE USER 'pig'@'%' IDENTIFIED BY '';

               CREATE USER 'pig'@'%';


二,授权:


      命令:GRANT all privileges ON databasename.tablename TO 'username'@'host'


     说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.


      例子: GRANT SELECT, INSERT ON test.user TO 'pig'@'%';

               GRANT ALL ON *.* TO 'pig'@'%';


      注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

           GRANT all privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;


三.设置与更改用户密码


     命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");


      例子: SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");


四.撤销用户权限


      命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';


     说明: privilege, databasename, tablename - 同授权部分.


      例子: REVOKE SELECT ON *.* FROM 'pig'@'%';


      注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限.


      具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看.


五.删除用户


      命令: DROP USER 'username'@'host';


Django的部署视频教程,录制中途耳麦坏了,所以后面没有声音了,过程还是非常详细的,下面是优酷播放地址,清晰度欠佳。你可以下载视频http://pan.baidu.com/s/1bnhAVSV  (解压密码www.loonapp.com)播放器下载地址:http://pan.baidu.com/s/1o6ufJoI

 下载播放清晰度是非常高。

 优酷播放地址:http://v.youku.com/v_show/id_XNjczNzIxMDQw.html


详细步骤:

django部署:

    centos+nginx+uwsgi+django

一、服务器环境:

    1、centos6.4

    2、python2.6.6(centos6.4默认)

    3、django1.4.5

    3、nginx1.4.5

    4、uwsgi2.0.1 


二、性能测试(仅做参考)

    webbench

    wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz

    tar zxvf webbench-1.5.tar.gz

    cd webbench-1.5

    make && make install

    webbench -c 500 -t 30 http://127.0.0.1/test.jpg

    

    runserver:

        webbench -c 10 -t 30 http://192.168.9.104:8000/   Requests: 1992 susceed, 0 failed.

        webbench -c 100 -t 30 http://192.168.9.104:8000/   Requests: 2197 susceed, 8 failed.

    参数说明:-c表示并发数,-t表示时间(秒)

    

三、上传项目文件

    2.1 收集静态文件:将从django资源中复制必须的静态文件到STATIC_ROOT指示的static文件夹中,其中包括admin界面中需要的样式表、图片、js脚本等

    python manage.py collectstatic

    2.2 上传项目文件

    

四、相关程序安装及配置

    2.1 django1.4.5

        wget https://www.djangoproject.com/download/1.4.5/tarball/

        python setup.py install

        

    2.2 nginx1.4.5

        http://nginx.org/en/download.html

        yum install pcre-devel.i686

        #yum install zlib(默认已经安装)

        yum install zlib-devel.i686

        ./configure

        make

        make install

    2.3 uwsgi2.0.1  

        http://projects.unbit.it/uwsgi/

        wget http://projects.unbit.it/downloads/uwsgi-2.0.1.tar.gz

        python setup.py install

        

        需要安装python-setuptools.noarch  yum install libxml2-devel yum install python-devel 

        

    2.4  配置部署

        uwsgi.ini

        nginx.conf

    

    

    nginx部署后性能:

    webbench -c 10 -t 30 http://192.168.9.109/    Requests: 4861 susceed, 0 failed.

    webbench -c 100 -t 30 http://192.168.9.109/   Requests: 5214 susceed, 0 failed

    webbench -c 1000 -t 30 http://192.168.9.109/  Requests: 5365 susceed, 24 failed

    

五、关于错误:

    1、uwsgi no python application found

    一般由于uwsgi.ini配置错误:检查wsgi-file路径和pythonpath路径


<< <