admin 管理员组文章数量: 1087139
2024年4月24日发(作者:phpstudy数据库连接失败)
大学生Django实训心得体会
不知不觉中,一个学期又要结束了。上学期结束时的日子仿佛历历在目,没想到又迎
来了一个学期的结束。这个学期依旧学习了Django,让我继续加深了对Django这门课
的认识。
实训让我觉得十分有意思,像打开了新的知识大门。Django结合了许多以前学过的
知识,将他们运用在了一起,让我感觉十分有趣。在实训的过程中也经常遇到许许多多的
小问题,有时候像“找茬”一样到处看到底有哪里和老师的代码不一样,但结果却总是失
败而归,可能这就是“当局者迷”吧。明明错误就在眼前,但却还是没有看出来,还是自
己太过于粗心大意了。不过这也让我充分认识到了代码有时候少打了一个“/”或者“’”,
又或者中英文状态没有转换都会导致代码运行不出来这一结果。所以督促自己要更加细心、
严谨地对待代码。
Django是python的web开发框架,遵循MVC的设计模式,但在Django中通常
称为MTV(model-template-views)。model是数据持久层,主要存放实体映射、实体关
系以及实体的一些方法。template是表示层,主要是用来显示数据,Django的视图引擎
可以将其渲染成HTML并显示。views是业务逻辑层,在Django中充当着链接model
与template的桥梁,处理模型并向template提交数据,同时也接受template的请求和
参数,完成相应的逻辑后提交模型修改。
个人认为这里的MTV和.NET MVC表达的是同一个意思,最大的差别就是在.net里
views是表示层,而Django里是业务逻辑层,根据官方文档的意思只是对views的理解
不一样而已,其实完全可以当成controller来用。下面我将根据个人的一些理解来介绍一
下Django的语法和特色。
1. views和URL
views是业务逻辑层,在Django里面views通常是一个的模块,放在对应
的包里。里面是具体的逻辑函数,每一个函数对应着一个或多个模版,为了建立
模版与视图的联系,还要有一定的路由机制,于是Django通常在根目录有一个路由程序
。路由由patterns来创建,用正则表达式来描述,极大地提高了路由机制的灵活性。
比如:
def home(request):
values = ()
()
return render_to_response('',{"values":values})
from ts import *
urlpatterns = patterns('',('^$',home),)
在这里request参数是必须的,但是你可以任意命名,只要符合规范即可,request
包含页面的请求信息。sender_to_response在uts里,所以你还要在前面
声明form uts import sender_to_response。里含有所有
的请求界面信息和用户信息。shor()是对list从小到大排序。返回值的意思就是向
模版提交一个values变量。urls中patterns中的元组添加了正则的导向规则:
除去原地址匹配'^$'者导向home。当然这前提是文件与在同一个文件
夹里面否则就要引用home的命名空间。如果想在url中传递多个值,可以在你想传递的
匹配值上面加上括号比如('^([^/]+)/([^/]+) /$', home)就可以匹配/some/some/而
some就会被传到处理函数home。相应的home要添加适当的参数来接受。
2. 模版(Template)
模版在Django中是显示数据的地方,通常为HTML格式,在模版中Django的处理
逻辑要写在{% %}中,而要显示的变量要写在{{ }}中。Django的母板页可以用任何文档充
当,前提是要用{% block name %}{% endblock %}声明要填充或替换的块,而使用时只
需{% extends 母版名字 %}然后调用相应的块就可以了。
3. 模型
在 中的database的字典中配置数据库。配置完成后 使用
startapp来创建app在models中编写python代码描述实体映射。比如:
class Publisher():
name = eld(max_length = 30)
website = ld()
def __unicode__(self):
return
class Meta:
ordering = ['name']
models包含在中,里面封装了模型类的通用接口。CharField()是创建
varchar型数据,参数有max_length,blank,verbose_name等。分别表示最大长度、是
否为空、显示名称。def__unicode__提供了装箱后的默认显示,如果没有设置此函数,默
认显示object类型。class Meta规定了模型的默认排序字段。同时Django也提供了外
键设置接口,此处以book为例:
class Book():
title = eld(max_length = 100)
authors = ManyField(Author) #多对多关系
publisher = nKey(Publisher) #多对一关系
publication_date = eld(blank = True, null = True)
创建完成后要在配置文件INSTALL_APPS中加入app包的路径。
Django支持codefirst 可以用 syncdb来同步数据库,更新数据库时
Django是先生成sql语句然后再执行,在执行前可以运行 validate来检查模
型,也可以运行 sqlall books。可以直接声明模型对象来实现数据的插入save()
保存 ()查找,可以对象调用delete()删除,同时也可以模型调用delete批量
删除。同理update也是对象调用单个修改,模型调用批量修改。
4. 集成的子框架
在b包中有多种附加功能包,目前只了解了admin和auth两种感觉
功能很强大,美中不足的是admin的界面略丑。 admin是Django官方提供的后台管理
平台。可以管理你所添加的app集成了包括增删改查在内的所有常用功能。调用代码也很
简单,只需要在内激活admin的链接即可,配置文件在里,有需求的
话可以自行改动。如果想把app的管理加入里面需要添加如下代码(以Book为例):
class BookAdmin(dmin):
list_display = ('title', 'publisher', 'publication_date') #显示顺序
list_filter = ('publication_date',) #过滤列表
ate_hierarchy = 'publication_date' #激活列表上方的日期查询
ordering = ('-publication_date',) #排序方式'-'代表倒序
filter_horizontal = ('authors',) #添加时候的横向选择过滤(此处假设book和
authors 是多对多关系)
raw_id_fields = ('publisher',) #添加时候的选择(此处假设publisher和book是一对
多关系)
er(Publisher)
er(Author,AuthorAdmin)
er(Book,BookAdmin)
5. 缓存机制
个人认为缓存对一个访问量过多的网站时非常重要的,Django里面提供的缓存方式
大致分为三种:全站缓存配置方式,针对视图缓存配置方式,针对数据缓存配置方式。只
要修改相关配置文件即可。也可以装其他插件来协助缓存,例如memcached。
最后在这里要感谢老师的教导,实训的时每做完一个步骤都会停下来询问我们有没有
问题,然后耐心地帮助我们解决问题。也很细心地指出我没解决出的问题,并帮我解决。
同时还要感谢我的室友们,多亏了她们我才能较为顺畅地完成实训。每次遇到问题都会耐
心帮我看问题在哪,有时候没跟上老师的步伐也会教我接下来怎么做,简直就是“中国好
室友”。感谢大家的帮助!
这次实训让我受益良多,到这也差不多告一段落了,圆满结束啦!
版权声明:本文标题:大学生Django实训心得体会3000字 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713889544a656251.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论