写个前端看的django入门教程

特别说明一下,网上有数不胜数的django好教程,包括开发环境和各种软件安装,都很详细,本篇仅仅写给特定的人群用于快速地像体验django开发网站的体验,并且其中文字肯定有诸多不合理和不够正确的地方,其实说快速体验也是比较滑稽的,因为就算是你只在window下开发的话也会与遇到诸如要配置很多环境变量之类的问题。

简单的介绍

Django是使用python构建网站的MVC框架,涵盖了web展示逻辑处理,数据模型处理,视图显示控制等多方面的处理,较有特色的是Django自带了后台管理功能。

使用Django来开发会涉及到不限于以下几个方面的事情:

  • 安装合适稳定的python版本以及与之相对应Django特定版本,之前在window7 64位下开发出现各种问题,建议在32位系统下开发,(Django等第三方库的安装因为python是跨平台的,所以在各种系统下都是类似的,都是在命令行下输入python setup.py install)
  • 选择开发工具,我使用的是aptana,在上面安装pyDev插件(并且配置好其中类似“环境变量”之类的参数,大概就是python安装在哪里),教程到处都是,需要注意的是debug项目时有一些runserver的参数需要配置,比如web应用端
  • 选择需要操作的数据库,然后安装与之相对应的python“适配器”(类似java中操作oracle需要特定的三方库),完了需要在项目的settings.py中添加这些配置
  • 创建项目(教程很多)之后aptana会自动生成一些符合Django项目特征的文件,比如上面提到的settings.py,类似的还有urls.py(使用配置应用层url跳转规则)

开始体验项目之前可以先准备一些参考的资料,不建议先看什么语法指南(指的是类似Dive into python之类的语言教程),因为有一定的编程基础加上编辑器的出错提示你很快就能适应和理解python的基础语法,待到需要使用到类似“数据类型”之类的对象时再去翻阅语法手册以避免低级错误。

开发准备

这里推荐一个不错的参考,有人翻译了www.djangobook.com的全文(搜一下即可看到,已经有chm本地版),里面会介绍如何安装Django,建立数据库,开发用的web服务器。

说一下几个概念:

  • Django作为一个“高级python web框架”,为你提供了开发一个网站需要的大概99%的功能,比如怎么渲染HTML,怎么配置URL映射,怎么分离逻辑和显示,怎么复用,怎么写ajax(jsonp),生成文件(CVS、PDF……)等等,所以基本上不比担心哪些功能你没办法实现。
  • python本身语法简介,加上Django为那些需要做网站的人做了很多繁杂的事情,因此你如果有一些有帮助的经验半天足够做出一个支持增删改查的DEMO站点。
  • 文中提到的所谓Django项目是指在普通的web项目中,在运行Django的项目构建命令之后生成特定特征的目录和文件,类似的命令还有很多,比如通过模型直接创建关联数据表。
  • 使用Django之后,所有的页面都是把数据塞到一个指定好的页面模板,两者配合输出的,所以你还需要了解一下模板语言,大体上和python本身有点像(包括条件判断、循环等),模板之间还有继承关键,所以整个网站也许只有一个框架html,然后里面各个布局下的模块有分别对应的模块来填充。

关于Django中MVC概念在项目中的比较实体化的对应,我的理解可能比较肤浅,如下:
M对应models.py,V对应views.py,C就是urls.py。

视图层示例

做一个网页的几个步骤:

  1. 添加一个“Django module“到项目中,aptana中很简单,只要右键项目名称-> Django -> Create Application,Django会自动在项目中生成一些文件,其中就包含了下面几个步骤中必须的文件。
  2. 在urls.py中配置好这个网页希望通过哪个地址访问,并指明这个地址是由哪个视图生成的(即这个视图的名称,位于views.py中)
    #访问xxx.com/hello的时候使用show_hello这个视图函数来生成网页
    (r'hello^$', 'show_hello’)
    
  3. 在views.py中编写这个视图的业务逻辑,比如你要输出一个“hello world”
    def show_hello(request):
    #这里写你需要发送到这个模板的变量
    vars = {
     ‘name‘ : request.GET.get(‘name’)
    }
    #这里的hello.html就是一个静态的html文件(俗称模板)
    return render_to_response(‘hello.html’,vars,
     context_instance=RequestContext(request))
    
  4. 编写hello.html:
    Hello world {{ name }}!
    
  5. 在aptana中配置debug环境,这些配置信息比较难查,这里直接写出来:<>
    1. 新建一个python run(debug)配置,在Main tab下选择要debug的项目,Main Module里选择项目中的manage.py
    2. 切换到Argument tab下,在Program arguments里,输入runserver –noreload 8002,其中8002是端口,让然还有其他参数可以添加,具体看这里:https://docs.Djangoproject.com/en/dev/ref/Django-admin/
    3. 配置完成后点击apply,再点击Debug,这时候可以看到console里输出几行成功提示,如果失败的话会有失败信息然后google之解决掉。这时候访问console给出的ip和端口,可以看到一行“It worked“,表示你的Django运行正常了。
    4. 最后访问你urls中配置好的地址,正常的话就会在页面上显示hello world ****.

至此一个简单的DEMO完成,以后需要了解的还有数据库相关的操作。

模型层

上面创建的模块中还有一个models.py,这里就是存放数据模型的,一个简单的示例:

class Person (models.Model): 
### 这段看起来有点像数据库字段说明混合表单字段类型的代码,告诉Django你的这个模型中各种属性字段的类型,如果用到表单中的话希望用什么表单组件来展示,并且这些组件有哪些属性
name = models.CharFiled(max_length=255)
def __unicode__(self):
 return self.name

创建完这个文件,即可在项目中再次右键,选择Django -> Sync DB(效果相当于在命令行中输入:python manage.py syncdb),检查当前模型文件和数据库之间是否同步,如果有没则创建表单等操作。如果没有其他报错,运行完这个之后就会在数据库中看到与这个模型对应的数据表,然后你就可以在视图层中操作这个模型,示例:

     
person = Person.objects.get(id=’21314’)
person.name = ‘rename’
person.save()

开启admin

只要在项目模块中添加admin.py即可开启,然后在这个文件中添加你需要在后台管理的模型,比如:

 
from Django.contrib import admin
from gallery.models import
admin.site.register(Person)

其他有可能牵扯到的内容,关于用户验证、session、cookie的操作,不通过模板生成http响应等内容,请参考上文提到的djangobook手册。

Published by

Z.J.T

Product Designer from Wandou Labs