当前位置:文档之家› Python & DJango入门教程[原创]

Python & DJango入门教程[原创]

网民原创Python DJango手册环境搭建项目创建项目配置应用创建数据访问数据编辑网民2011/9/22目录1.环境 (3)1.1.安装Python (3)1.1.1.说明 (3)1.1.2.安装 (3)1.1.3.验证 (3)1.1.4.卸载 (4)1.2.安装DJango (5)1.2.1.说明 (5)1.2.2.安装 (5)1.2.3.验证 (5)1.2.4.卸载 (6)2.起步 (7)2.1.项目 (7)2.1.1.创建项目 (7)2.1.2.运行项目 (7)2.2.后台 (8)2.2.1.说明 (8)2.2.2.引用库 (8)2.2.3.Sqlite3数据库 (8)2.2.4.URL (9)2.3.模块 (10)2.3.1.创建模块 (10)2.3.2.创建数据 (10)2.3.3.添加数据 (11)2.3.4.创建页面 (12)2.3.5.创建映射 (12)2.3.6.配置映射 (12)2.3.6.1.模块MVC (13)2.3.6.2.项目MVC (13)2.3.7.访问数据 (14)2.3.7.1.模块C (14)2.3.7.2.模块V (14)2.3.7.3.项目C (15)2.3.8.编辑数据 (16)2.3.8.1.模块V (16)2.3.8.2.模块C (16)1.环境1.1.安装Python1.1.1.说明python安装文件可从下载;例如python-2.7.2.msi;1.1.2.安装1)运行python安装文件,例如“python-2.7.2.msi”;2)建议安装路径:.\\PythonServer\\PythonXXX;例如,python的版本是2.7.2,则安装路径为“.\\PythonServer\\Python272”,这样其他python相关的安装程序都可以放到.\\PythonServer下,且能看清python版本;3)增加系统环境变量,在path内增加python根目录路径,例如“D:\\PythonServer\\Python272”;1.1.3.验证1)进入WINDOWS命令行界面;2)输入“python”,则进入python的命令行,可以看到python的版本信息和命令符;3)输入python代码,例如“print ‘pyton is ok’”,会看到python打印出一行“python is ok”,说明python安装成功;4)退出python命令行,输入“exit()”或按下“Ctrl+Z”皆可;1.1.4.卸载1)开始菜单->所有程序->python->卸载即可;2)如果添加过操作系统环境变量,则手动删去;1.2.安装DJango1.2.1.说明DJango框架安装文件可从下载;例如Django-1.3.tar.gz;1.2.2.安装1)解压Django-1.3.tar.gz;任何路径皆可;例如“D:\\Django-1.3”;2)解压后的文件夹里可以看到有一个文件“setup.py”;3)进入WINDOWS命令行界面,输入“cd D:\\Django-1.3”;4)运行命令“python setup.py install”;5)自动安装完毕;6)增加环境变量,在path内添加django的根目录路径,例如:“D:\PythonServer\Python272\Lib\site-packages\django”以及“D:\PythonServer\Python272\Lib\site-packages\django\bin”;1.2.3.验证1)进入WINDOWS命令行界面;2)输入“python”进入python命令行;3)输入python命令>>import django>>print django.VERSION如果打印出DJango的版本信息,例如“(1, 3, 0, 'final', 0)”,说明安装成功;1.2.4.卸载1)找到python安装目录下的子目录,例如“D:\PythonServer\Python272\Lib\site-packages”;2)可以看到有一个“django”文件夹和“Django-1.3-py2.7.egg-info”文件,将该文件和该文件删除即可完成卸载;3)如果添加过操作系统环境变量,则手动删去;2.起步2.1.项目2.1.1.创建项目1)打开操作系统命令行界面;2)创建项目的django命令为“django-admin.pyc”;3)参数示例:django-admin.pyc startproject FirstDJProject表示工程目录为“FirstDJProject”;4)注意,当前系统命令行的位置即为项目路径,因此,需提前在命令行里定位到要存放项目的路径,再进行项目创建;5)创建好项目后,项目路下有N个文件;2.1.2.运行项目1)在系统命令行界面下定位到项目路径;2)项目路径下的manage.py即为该项目的管理文件;关于该项目的很多功能都通过该管理文件来启动;3)输入“python manage.py runserver”即刻启动django自带的可作为开发调试用的WEB服务器;4)看到提示“Development server is running at http://127.0.0.1:8000/”表示项目后台已经开始运行;5)打开浏览器里,输入http://127.0.0.1:8000/,看到“It worked!”提示,表示项目搭建成功;2.2.后台2.2.1.说明django自带一个后台管理界面,但是,在访问后台管理界面前,需要先进行如下配置:1)配置引用库;2)配置数据库;3)配置URL;如果使用sqlite3数据库,不需要任何其他的安装,因为从Python2.5开始,sqlite3就已经是python的标准模块,这也是pyton中一个唯一的数据库接口类模块;如果使用其他数据库例如mysql,则需要进行相应的安装;后续的示例使用sqlite3数据库;2.2.2.引用库1)打开项目下的settings.py文件;2)找到INSTALLED_APPS配置;3)增加引用库’django.contrib.admin’;配置文件中已存在,只需去掉注释;4)该文件里一般默认都引用了auth、contenttypes、sessions、sites等库;2.2.3.Sqlite3数据库1)打开项目下的settings.py文件;2)找到DATABASES配置;3)配置ENGINE为“django.db.backends.sqlite3”;配置文件中原有“django.db.backends.”,只需增加对应的数据库名;4)配置NAME为sqlite3数据库存放路径和名称,例如D:\PythonServer\StudyPython\FirstProject\MySqlite3.db;5)运行命令“python manage.py syncdb”,即自动创建后台所需的数据库,同时会提示需要创建账户,可输入yes来创建,也可输入no,自己手动创建;命令执行完毕后,可以找到NAME配置的数据库文件;6)如果手动创建账户,则运行命令“python manage.py createsuperuser”;2.2.4.URL1)打开项目下的urls.py文件;2)输入代码from django.contrib import adminadmin.autodiscover()配置文件中已存在该代码,只需去掉注释即可;3)找到配置项urlpatterns,增加如下配置url(r'^admin/', include(admin.site.urls)),配置文件中已存在该代码,只需去掉注释即可;4)输入“python manage.py runserver”启动项目服务器;5)在浏览器中打开“http://127.0.0.1:8000/admin/”,即可看到后台管理界面,需要输入之前创建的账户才能进入管理;2.3.模块2.3.1.创建模块目前的项目中还没有任何自己的应用模块,全是框架自动生成的东西;可以创建自己的应用模块,在模块内创建数据表,并添加自己的页面;1)输入命令“python manage.py startapp xxx”,其中xxx是模块的名称,例如:python manage.py startapp art2)此时在项目路径下多了一个名称为art的文件夹,该文件夹内保存的是与该模块相关的文件;3)打开项目下的settings.py文件,找到INSTALLED_APPS配置;4)增加针对该模块的引用’FirstProject.art’;2.3.2.创建数据1)打开模块目录下的models.py文件,该文件是MVC中的M,负责应用的数据结构;2)文件中原有一句“from django.db import models”,现增加如下代码:class TB1(models.Model):content = models.CharField(max_length = 500)submit_date = models.DateTimeField(‘auto_now_add’) 表示要创建一个数据表,而该数据表的访问类名为TB1;以此方式可以创建多个数据表;3)输入命令“python manage.py sql art”,可以查看自动生成的针对art模块下的所有数据表的sql创建代码,例如:BEGIN;CREATE TABLE "art_tb1" ("id" integer NOT NULL PRIMARY KEY,"content" varchar(500) NOT NULL,"submit_date" datetime NOT NULL);CREATE TABLE "art_tb2" ("id" integer NOT NULL PRIMARY KEY,"content" varchar(100) NOT NULL,"submit_date" datetime NOT NULL);COMMIT;从该段代码可看出,数据表属于art模块,名称为art_tb1,针对该数据表的操作MODEL名称为TB1;4)运行命令“python manage.py syncdb”则自动创建出数据表;2.3.3.添加数据1)在系统命令行模式下,定位到项目路径;2)输入命令“python manage.py shell”进入专门针对该项目的命令行模式;3)输入如下代码来添加数据:>>from art.models import TB1 //从art模块导入TB1 MODEL >>from datetime import datetime //导入框架的datetime>>Art.objects.create( //objects表示数据表里的行content = ‘MyContent1’, //content字段submit_date=datetime.now()) //submit_date字段>>…//以此方式添加多条数据4)接着可使用如下的代码简单的获取到数据表内的数据:>>all_line = TB1.objects.all() //获得TB1的所有行>>print all_line[1].content //打印第一行的content字段2.3.4.创建页面1)页面一般统一放在ProjectPath\Templates目录下;Templates是较常用的名称,也可自行更改;2)在Templates下,针对应用模块的名称再单独创建子目录;3)例如“ProjectPath\Templates\art”表示该目录下存放的是针对art模块的页面;4)这些页面就是MVC中的V,负责应用的视图;5)在“ProjectPath\Templates\art”下创建一个最简单的静态的html页面,但注意html文件的编码方式需要为utf8;2.3.5.创建映射1)打开模块目录下的views.py文件,该文件是MVC中的C,负责应用的逻辑处理;2)写入如下代码:from django.shortcuts import render_to_responsedef MyFirstView(rq):return render_to_response('art/Static1.html')3)函数MyFirstView只做一件事情,就是把页面跳转到art目录下的Static1.html;注意,该路径用的是相对路径,也就是会在Templates目录下寻找“art/Static1.html”,之所以能到Templates目录下寻找,就是后续的配置映射做到的;2.3.6.配置映射在一个项目内创建模块,并使用该模块,全部步骤可以分为两个部分:模块MVC 和项目MVC;2.3.6.1.模块MVC按照之前的描述,在项目内创建一个模块时,按照MVC的思路分为三个步骤:1)M:即创建模块并在模块的models.py中创建数据;2)V:即在“项目\Templates\模块”目录下创建该模块对应的各个页面;3)C:即在模块的views.py中创建各个逻辑控制函数;2.3.6.2.项目MVC在完成一个模块的MVC之后,还需要在项目级别按照MVC的思路进行配置:1)M:打开项目下的settings.py文件,找到INSTALLED_APPS配置;增加针对该模块的引用’FirstProject.art’;2)V:打开项目下的settings.py文件,找到TEMPLATE_DIRS配置;写入模版路径:TEMPLATE_DIRS = ('Templates')因此,编写控制函数时,如下的代码使得系统在Templates内寻找相应文件:return render_to_response('art/Static1.html');3)C:打开项目下的urls.py文件;找到配置项urlpatterns,增加配置:url(r'^test/', 'FirstProject.art.views.MyFirstView')或者url(r'^test/', 'art.views.MyFirstView');4)完成了模块MVC和项目MVC配置后,在浏览器中打开“http://127.0.0.1:8000/test/”,即可看到art/Static1.html页面;2.3.7.访问数据2.3.7.1.模块C创建一个模块的控制器,用来生成页面数据以供页面显示;打开模块目录下的views.py文件,添加函数如下:注意:1)该控制器返回给页面使用的数据类型是一个列表,名称为’all_lines’;2)在一个函数内,一定要注意缩进方式,如果用空格缩进,则所有行都只能用空格来缩进,如果用TAB缩进,则所有行都只能用TAB来缩进,否则会报告IndentationError错误;2.3.7.2.模块V在对应的模块页面目录下创建一个UTF8编码的DataView.html文件,用来显示模块控制器所生成的数据:注意,在HTML代码内使用python脚本时,1)使用{% %}来包含python脚本;2)使用{{ }}来包含要显示的变量内容;该HTML代码翻译为自然语言如下:2.3.7.3.项目C1)打开项目下的urls.py文件;2)找到配置项urlpatterns,增加配置:url(r'^viewdata/', 'art.views.MyDataView'),3)打开浏览器访问http://127.0.0.1:8000/viewdata/;则可以看到页面显示出目前的art_tb1数据表内的每一行的content内容;2.3.8.编辑数据为了实现编辑数据的功能,可以在之前“访问数据”的基础上进行升级,只需要升级模块V和模块C即可;2.3.8.1.模块V在原DataView.html文件的基础上,增加一个form,包含一个编辑框来提交数据:1)声明该form的”method”是get还是post,从而在模块C中可以用request对象里的POST或GET属性来完成表单元素访问;2)该form的”action”配置表明,按下提交按钮后,浏览器将访问http://127.0.0.1:8000/viewdata/;3)由此可见,对于页面(模块V)来说,永远只考虑“发送请求给某个URL”,而具体该URL由哪个控制器(模块C)来处理,是由配置来决定的;4)有一个输入框,name为”new_content”表明在模块C中可以通过request.POST.new_content来访问该元素;5)该页面目前的功能为:首先显示模块C生成的数据,其次可以提交用户所输入的新的content值;2.3.8.2.模块C根据目前模块V的升级,http://127.0.0.1:8000/viewdata/的请求到来时有两种情况,但这两种情况都配置给同一个模块C的函数“MyDataView”:1)没有请求数据,即POST中没有数据;2)有请求数据,即POST中包含一个新的content值;因此,在原views.py文件的“MyDataView”函数基础上进行升级:此时再访问http://127.0.0.1:8000/viewdata/,可以看到:1)页面首先显示目前art_tb1数据表中的所有数据;2)接着显示一个输入框,可以输入新的content数据并提交;3)提交数据后,页面刷新,再次显示目前art_tb1数据表中的所有数据,可看到刚输入的新的content内容已经被加入到数据表中;4)如果报告403错误,则在项目配置文件settings.py中保证引用了如下两个模块:'django.middleware.csrf.CsrfViewMiddleware','django.middleware.csrf.CsrfResponseMiddleware'。

相关主题