大概讲讲一周以来学习Django的心得
开始的准备:
1.到官网 http://www.python.org/download/ 下载并且安装好Django 我安装的是1.6版本,怎样安装详见官网的三条指令。
2.创建一个项目: shell下进入你想创建这个项目的目录的路径输入 django-admin.py startproject mysite
这样会在你的当前目录下创建一个目录。mysite
3.配置mysite/mysite/setting.py 中的ROOT_URLCONF,令其urlConf = 'mysite.urls', 这样所有访问的url都会到mysite.urls中去寻找
相应匹配的视图( views )
例子: 当访问 URL /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf 。 然后按顺序逐个匹配URLconf里的URLpatterns,直到找到一个匹配的。 当找到这个匹配 的URLpatterns就调用相关联的view函数,并把 HttpRequest 对象作为第一个参数。
Django MVC
Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含义:
M ,数据存取部分,由django数据库层处理
V ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。
C ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的Python 函数。 由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),**Django 也被称为 MTV 框架 。
一个视图功能必须返回一个HttpResponse。 一旦做完,Django将完成剩余的转换Python的对象到一个合适的带有HTTP头和body的Web Response,(例如,网页内容).
总结一下:
1.进来的请求转入/hello/.
2.Django通过在ROOT_URLCONF配置来决定根URLconf.
3.Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
4.如果找到匹配,将调用相应的视图函数
5.视图函数返回一个HttpResponse
6.Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
这里建议大家阅读关于HttpResponse的更多信息。
4. 创建一个app: 在mysite下一级目录创建一个名为books的app: python manage.py startapp books.
在这个目录下创建一个名为templates的文件夹,这个文件夹存放的就是对应于这个app的模板.
ps: 这是1.6与之前版本的区别,1.6版本在setting.py中没有了template_dir这个参数,寻找模板时默认会到app目录下的template文件夹中去找模板,请大家注意.
5.模型安装:在setting.py中找到INSTALLED_APPS,添加books,注意最后要加上逗号。
6.在books文件夹下的models.py 中创建你想建立的模型,然后在shell下输入 python manage.py validate验证模型是否有错误,如显示error=0即无错。
然后输入python manage.py syncdb 创建表同步到数据库。
ps: 这里我使用的是sqlite数据库,不能删除表,所以如果你觉得创建的表字段有错误,只能把sqlite.db这个文件删除,再次创建表。或者可以安装一个数据库。
关于模型: http://firehuman.blog.163.com/blog/static/57331120094642817267/ 这里有关于models的所有字段类型
Django为每个表格自动添加了一个 id 主键,你可以自己建立一个自增字段取代,如:V=models.AutoField() 那么V就是一个自增字段.
讲讲关于urls.py这个文件。 这个文件其实放在哪儿,有多少个都可以,只要你在setting.py 中urlConf的配置中把所有要寻找的文件路径加入即可。
在Django中第三章的实例是这样的:
from django.conf.urls.defaults import * (1.6要改成 from django.conf.urls import patterns, url, include)
from mysite.views import hello
urlpatterns = patterns('',
('^hello/$', hello), #这里hello时没有引号的,是因为已经import hello了
)
若然是要引入一个app里面views的函数 有两种写法:
1.from django.conf.urls import patterns, url, include
from leftnet.views import issue
urlpatterns = patterns('',
(u'^issue/$', issue), #第一种写法 from leftnet.views import issue 把issue这个函数引入 那个issue就不用加引号.
)
2.from django.conf.urls import patterns, url, include
urlpatterns = patterns('',
(u'^issue/$', 'leftnet.views.issue'), #直接引入 格式: 'appname.views.function' 注意要加引号.
)
下面讲几个概念。
Django Python Shell
$python manage.py shell
进入有Django配置的shell,可以不设置Django环境变量 在启动解释器之前,它告诉Django使用哪个设置文件。
Django框架的大部分子系统,包括模板系统,都依赖于配置文件;如果Django不知道使用哪个配置文件,这些系统将不能工作。
原理:Django会搜索环境变量DJANGO_SETTINGS_MODULE,它被设置在settings.py中,当运行manage.py中,它会自动加载settings.py
Django MVC
Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含义:
M ,数据存取部分,由django数据库层处理
V ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。
C ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的Python 函数。 由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),**Django 也被称为 MTV 框架 。
总结:
1.Django很强大,尤其时模板处理系统,能使用贴近编程语言的语法去控制界面要显示的元素,一个模板能重复使用,值得你花心思去研究通用的模板.
2.models封装得很好,models的属性方法很齐全,而且用起上来也很简单方便。
3.验证表单form也是一个很好用的工具,但由于尚未很了解,所以下次再写。