Django学习心得

2022-01-23 0 231

Django是python的web开发架构,遵循MVC的策略模式,但在Django中通常称之为MTV(model-template-views)。model是数据信息持久层,关键储放实体线投射、实体线关联及其实体线的一些方式。template是表示层,主要是用于表明数据信息,Django的主视图模块可以将其3D渲染成HTML并表明。views是领域模型层,在Django中当做着连接model与template的公路桥梁,解决实体模型并向template递交数据信息,与此同时也接纳template的要求和主要参数,进行对应的逻辑性后递交实体模型改动。

本人觉得这儿的MTV和.NET MVC表述的是同一个含意,最大的不同便是在.net里views是表示层,而Django里是领域模型层,依据官方网文本文档的含意仅仅对views的了解不一样罢了,实际上根本可以当做controller再用。下边我将依据自己的一些了解来介绍一下Django的语法结构和特点。

1. views和URL

views是领域模型层,在Django里边views通常是一个的views.py控制模块,放到相匹配的包内。views.py里边是实际的逻辑运算,每一个函数公式相匹配着一个或好几个模板,为了更好地创建模板与主视图的联络,还需要有一定的路由器体制,因此Django通常在网站根目录有一个路由器程序流程urls.py。路由器由patterns来建立,用正则表达式来叙述,极大地提高了路由器体制的操作灵活性。

例如:

views.py

def home(request):
    values = request.META.items()
    values.sort()
    return render_to_response(\'home.html\',{\"values\":values})
urls.py
from django.conf.urls.defaults import *
    urlpatterns = patterns(\'\',(\'^$\',home),)

在这儿request主要参数是一定的,可是你能随意取名,只需符合要求就可以,request包括网页页面的要求信息内容。sender_to_response在django.shortcuts里,因此你还需要在前面申明form django.shortcuts import sender_to_response。request.MATE里带有全部的要求页面信息内容和客户信息。shor()是对list由小到大排列。回到值的意思便是向home.html模板递交一个values自变量。urls中patterns中的元组加上了正则表达式的导向性标准:去除原详细地址配对'^$'者导向性home。自然这前提条件是views.py文件与urls.py在同一个文件夹名称里边不然就需要引入home的类名。假如想在url中传送好几个值,可以在你要传送的配对值上边再加上引号例如('^([^/] )/([^/] ) /$', home)就可以配对/some/some/而some便会被传入处理函数home。相对应的home要加上合理的技术参数来接纳。

2. 模板(Template)

模版在Django中是表明数据信息的地区,通常为HTML文件格式,在模板中Django的解决逻辑性要写在{% %}中,而要展现的自变量要写在{{ }}中。Django的母板页可以用一切文本文档当做,前提条件是要用{% block name %}{% endblock %}申明要添充或更换的块,而应用时只需{% extends 母版名称 %}随后读取相对应的块就可以了。

3. 实体模型

在setting.py 中的database的词典中配备数据库查询。配备进行后 应用manage.py startapp来建立app在models中撰写python编码叙述实体线投射。例如:

models.py

class Publisher(models.Model):
    name = models.CharField(max_length = 30)
    website = models.URLField()
def ._unicode__(self):
    return self.name
class Meta:
    ordering = [\'name\']

models包括在django.db中,里边封装形式了实体模型类的常用插口。CharField()是建立varchar型数据信息,主要参数有max_length,blank,verbose_name等。各自表明较大长短、是不是为空、表明名字。def._unicode__给予了装车后的默认设置表明,要是没有设定此函数公式,默认设置表明object种类。class Meta要求了建模的默认设置排列字段名。与此同时Django也保证了外键约束设定插口,这里以book为例子

class Book(models.Model):
     title = models.CharField(max_length = 100)
     authors = models.ManyToManyField(Author) #多对多关联
     publisher = models.ForeignKey(Publisher) #多对一关系
     publication_date = models.DateField(blank = True, null = True) 

建立进行后要在setting.py环境变量INSTALL_APPS中添加app包的途径。

Django适用codefirst 可以用manage.py syncdb来同歩数据库查询,更新数据库时Django是老先生成sql语句随后再实行,在实施前可以运作manage.py validate来查验实体模型,还可以运作manage.py sqlall books。可以立即申明实体模型目标来完成数据信息的插进save()储存 objects.filter()搜索,可以目标读取delete()删掉,与此同时还可以实体模型读取delete批量删除。同样update也是目标读取单独改动,实体模型读取批量修改。

4. 集成化的子架构

在django.contrib库中有多种多样额外作用包,现阶段只了解了admin和auth二种觉得作用很强劲,不完美的是admin的页面略丑。 admin是Django官方网给予的管理后台服务平台。可以管控你所增加的app集成化了包含增删以内的全部常用功能。读取编码也非常简单,只要在urls.py内激话admin的连接就可以,环境变量在setting.py里,有需要得话可以自主修改。假如想把app的管理方法添加里边必须加上如下所示编码(以Book为例子):

class BookAdmin(admin.ModelAdmin):
    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是一对多关联)
admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book,BookAdmin)

5. 缓存文件体制

本人觉得缓存文件对一个浏览量太多的网址时十分关键的,Django里边带来的缓存文件方法大概分成三种:整站缓存文件配备方法,对于主视图缓存文件配备方法,对于数据信息缓存文件配备方法。只需改动有关环境变量就可以。还可以装别的软件来帮助缓存文件,例如memcached。

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Python教程 Django学习心得 http://www.20zxx.cn/295659/xuexijiaocheng/python.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务