请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

东北人与新疆人火拼 Django 小试牛刀 逍遥王爷绝世妃

[复制链接]
查看: 806|回复: 0

299

主题

464

帖子

916

积分

高级会员

Rank: 4

积分
916
发表于 2019-4-17 13:02 | 显示全部楼层 |阅读模式

Django 小试牛刀

Django 小试牛刀  科技资讯 130216wlhkfhdfqbpfo2qd


Django是一个开放源代码的Web利用框架,由Python写成。它最初是被开辟来用于治理劳伦斯出书团体旗下的一些以消息内容为主的网站的。Django的首要方针是使得开辟复杂的、数据库驱动的网站变得简单。
对于Django 框架,我的评价是:这是一个全功用的Web 开辟框架。Web 开辟所需要的一切它都包括了,你不需要去挑选,只需要去熟悉,然后利用。
相对于 Flask、web.py 和 Bottle 这一类微型框架来说,Django 上手会有点复杂,但也并不难,由于官网的新手指导写得很清楚。在众多框架中,Django 的文档算是相当优异和完整的了。
下面,我们用Django简单做一个系统出来。一路来熟悉 Django,领会它所供给的具体功用点。
别的,最重要的一个工作是若何检察文档。Django 的文档即即是写得再好,也会让人“迷路”。以后我们会快速地把Django 文档中触及的各个模块都理论一下,终极做出一个简单的系统来。
在正式开辟流程中,有能够会在选型阶段来完成这部份内容。我们需要做一个简单的系统,找找感受,大概说看看现实利用中的婚配水平。
好了,让我们起头吧。
<h1>若何阅读 Django 文档

用笔墨来描写若何阅读文档似乎不是一件轻易的事,我只管表达清楚。
文档结构
Django 是基于 MVC(Model-View-Controller)形式的框架,虽然也有人称其为 MTV 形式的,可是概念大同小异。我们只需知道,不管它是 MVC 形式还是 MTV 形式,甚至是其他什么形式,终极的目标都是解耦,把一个软件系统分别为一层一层的结构,让每一层的逻辑加倍纯洁,便于开辟职员保护。
我们先看一下 Django 处置请求的表示图(如图 3-1 所示),从中可以直观领会到 Django 供给了哪些模块以及各个模块所处的位置。

Django 小试牛刀

Django 小试牛刀  科技资讯 130216ieeudeilsio1d3er
图3-1 一次请求触及的Django 模块表示图

基于图3-1,我们再来看看Django 文档。
从大的分别上来说,Django 文档先是分出了这么几个部分:Model 层、View 层、模板层和Form模块。剩下的部分都是功用文档,比如Pagination(分页模块)和Caching(缓存模块)等,这些是可以贯串一切层的模块。
而每个模块大概说层又分为分歧的模块,下面我们简要先容一下常用的模块。
1. Model 部分
Model 在全部项目结构中是间接同数据库打交道的一层,所以数据处置的部分都在这一层。在营业开辟中,关于纯数据操纵的部分,倡议都放到这一层来做。

  • Models:模子界说相关的利用说明,字段范例,meta 设置。
  • QuerySets:在Model 的根本上怎样检察数据,有哪些接口可以用(比如all 和filter等),以及若何更进一步停止定制。究竟ORM 在查询上会有一些限制,可是在这一部分中你可以找到若何自界说查询。
  • Model instances:Model 的道,一个道梢粤私馕碇械囊槐始锹。这个道心男┎僮,若何点窜表的数据,都在这了。
  • Migrations:在开辟阶段,我们能够会不竭调剂表的结构,这部分就是用来做表结构调剂的。理论上,我们只需要知道两个号令—— makemigrations 和migrate 就行了,可是假如你想领会更多,可以仔细看看这部份内容。
  • Advanced:高级部分(别被“高级”这两字吓到)。这里触及若何自界说Manager(也就是常用的Model.objects.all 中的objects),以及假如不爽ORM的查询限制,可是又想利用ORM工具的映照,可以斟酌利用原生SQL。别的,关于事务、聚合、搜索以及大都据库支持等更多关于Model 层的需求,都可以看这里。
  • Other:这一部分有两块倡议一定要看看。一个是Legacy databases(遗留数据库)。设想一下,有人甩给你一个遗留的CMS 项目,要将其改成Django 的,你拿到数据库后,可以间接按照此数据库天生Model。以后你再花几分钟写写admin 部分的代码,CMS 就出来了,能否是很高效!别的一部分就是Optimize database access,一定要看!避免你踩坑。假如不想看英文,可以到我的博客中看中文翻译。虽然版本较老,可是仍然适用,详见“翻译了Django 1.4 数据库拜候优化部分”,网址为https://www.the5fire.com/django-database-access-optimization.html
2. View 部分
在上一节的文档中,我们知道若何跟数据库打交道,简单来说就是可以操纵数据库了。而在这部分(View)中,偏重点将在营业上。经过获得数据、过滤数据和整合数据,拿到我们想要的成果,然后传递到模板中,终极经过HttpResponse 衬着出来。
在Django 的文档中,View 部分包括了URL 设置、HTTP Request、HTTP Response 以及处置请求的view 函数和类级的View 等。下面我们逐一罗列。

  • The basics:包括URL 设置、View 方式以及常用装潢器,比如想给这个接口增加缓存大概增加限制(只答应GET 请求)等。
  • Reference:一些参考,包括内置的View(比如静态文件处置和404 页面处置等),Request 和Response 工具先容,TemplateResponse 工具先容。
  • File uploads:这部分先容了文件上传的内容,它是Web 开辟中常碰到的题目,其中供给了一些内置的模块来帮你处置上传上来的文件。它也会告诉你若何自界说后端存储。
  • Class-based views:这部分可以了解为更复杂的view 函数,只不外这里先容的是类。经过类可以供给更好的复用,从而避免自己写很多代码。当你发现你的view 中有太多营业代码时,可以斟酌参考这部份内容把代码革新为class-based view(简称CBV)。假如你的代码中有很多类似的view 函数,也可以斟酌这么做。这部分文档就是告诉你,在Django中,若何更好地构建和复用View。
  • Advanced:更高级的部分,告诉你若何把数据导出为CSV 大概PDF 格式。之所以冠名为“更高级”,能够是由于用得少。
  • Middleware:中心件(中心层),不管怎样翻译,你得了解它的感化,这一部分代码感化于WSGI(大概socket 毗连)和View 之间。还记得第2 章讲的WSGI 中心件的内容吗,一样的逻辑,都是对view 函数做了一个包装(确切地说,是对View 的输入request 和输出response 停止处置),可是稍微复杂了一些。在Django 中,平安、session、整站缓存的内容都在这一块了。
3. Template 部分
这是Django 宣称对设想师友爱的部分,而且确切如此。由于它供给的语法很简单,即使你不懂编程,也可以很轻易进修和利用。

  • The basics:这部分先容了Django 模板的根基设置以及根基的模板语法,还有若何利用其他模板引擎(比如Jinja2)的设置。
  • For designers:这部分说是给设想师看的,可是你也应当看一看,里面包括根本的控制语句、正文、内置的过滤器和标签,还有最重要的针对用户友爱的数字的展现。
  • For programmers:这个法式员更应当看看了,里面包括若何将数据传递到模板中,若何设置模板以致于可以在View 中更好地衬着模板,还有若何对现有模板所供给的简单功用做更多定制。
4. Form 部分
不管是对于传统的、需要经过Form来提交数据的页面,还是经过Ajax 的方式提交数据到后端,Form 都是很是好用的,它可以帮我们比力文雅地处置和校验来自内部的数据。它的工作道理跟ORM 很像(关于ORM是什么,可以拜见https://www.the5fire.com/what-is-orm.html)。Form是对HTML 中Form表单的笼统,可以方便我们用Python 代码来间接操纵页面传递过来的数据。

  • The basics:根本的API 先容,里面有类似于Model 的Field 的部分,还有组件(widget)的部分。
  • Advanced:更丰富的用法,包括若何把Form同Model 连系(Model 也有Field,Form也有Field,共用一套行不可?),以及若何把静态资本衬着到页面上。假如Form充足好用,我们底子不必频仍操纵模板。还有若何结构字段,一行展现一个还是一行展现多个。此外,还有加倍具体、深入的部分,那就是若何界说字段级此外考证功用,比如页面上只答应输入数字的地方若何考证。
这部分在开辟admin 时很常用,由于admin 跟Model 连系慎密,假如需要去改模板的话,本钱会有点高,所以更好的做法是经过自界说Form以及widget 来实现我们需要的功用。很多时辰,我们不需要操纵页面便可以完成需求,这对后端法式员来说是相当友爱的。
别的,即即是对于现在风行的单页利用,也可以利用Form来处置接口拿到的数据,其逻辑跟传统的提交表单的方式没太多分歧。
5. 开辟流程
这一部分倡议一定要看!很重要。假如说前面的内容都是为了让你把握利用Django 的技术,那末这一阶段就是让你的代码开释才能。开辟完成后,应当怎样摆设系统?有哪些工具是需要设置的?线上情况应当是什么样的?
你应当仔细看看这部分。

  • Settings:不能不说,Django 的可设置项很是多,即即是工作了多年的人,也能够有一些设置完全没用到过。可是,你知道有哪些设置,每个设置的感化是什么吗?举个简单的例子,你想让系统出现异常时自动发送邮件告警,该怎样做?自己写一个发邮件的功用?想太多了,看看这些设置,你就知道了,只需要设置几个参数就能到达目标。
  • Applications:在Django 中,App 是一个很重要的概念,我们需要把营业拆分红份歧的App来开辟,那末若何治理这些App,若何在法式运转时获得到有哪些App,每个App 的信息是什么,这里可以领会到。
  • Exceptions:异常是每个法式员(非论什么水平)都没法避免的题目,唯一的不同在于,水平较高的人可以轻松经过异常提醒找到题目地点。这一部排罗列了Django 中常用异常的界说,在什么情况下会出现异常。这部分只需阅读一遍即可,很多异常你在开辟时会经常碰到,特别是利用Django 的早期。
  • django-admin and manage.py:这是每一小我打仗Django 时用到的第一个号令,这部分具体先容了django-admin 和manage.py 的利用方式,以及它们有哪些功用,比如最常用的runserver 以及migrate 等。别的,假如你需要自界说类似于runserver 这样的号令时,可以参考这部分。
  • Testing:单元测试是开辟进程中的重要一环,它可以帮助你编写更稳定的代码,避免开辟中的一些题目。在Django 中编写TestCase 是相对轻易的事,由于只需要按照它封装好的结构来编写自己的代码便可以了。经过把握很少的常识,就能完成单元测试的编写。这一部分倡议随着写一遍,会有收获的。
  • Deployment:代码开辟完了,终极怎样上线,怎样摆设,怎样给用户供给办事呢?这些题目可以在这一部分获得处理。这部分具体讲授了若何经过WSGI 连系其他法式来摆设你的利用,若何设置静态文件,若何收集线上的异常。这一部分文档需要你频频检察,特别是当你预备上线项目时,但要留意文档只是用来参考的。
6. 其他部分
Django 的文档很是丰富,除了上面先容的几个比力大的主题外,还有很多小的主题也需方法会,这里就不具体罗列了,只是大要说说,等用到时,可以知道到哪儿去看即可。

  • The admin:假如你需要做基于内容的治理系统,这部分是逃不掉的。固然,你可以挑选不用它的admin,完全自己实现,可是相信我,把握admin 可以大猛进步开辟效力,没有什么比界说好一个Model,简单设置后就能做出一个背景治理系统更爽的事了。不外话说返来,Django 文档上关于admin 部分的先容没有那末多,可是从根基利用上来说是够用的。更多的定制需要去参考源码。
  • Security:平安模块,这部分也是一个成熟框架的标志,一个成熟的框架一定履历了各种平安的检验。这部分先容了常见的Web 开辟的平安题目,以及Django 是若何处置的。假如筹算做Web 开辟,平安题目不成轻忽!
  • Internationalization and localization:国际化和当地化(也称i18n 和l10n)。假如你想要编写国际化的软件,具体阅读这部分必不成少。别的,Django 默许的说话是英语,时区是美国时候,是以在做admin 部分系统文案的展现时,需要点窜默许说话为中文(zh-hans),假如要操纵时候的话,需要把时区改成中国(Asia/Shanghai)。这里需要留意的是,Django在写数据库时,日期和时候用的都是UTC 时候。是以,我们需要在这一部分领会若何利用Django 供给的函数处置时区转换。
  • Performance and optimization:性能和优化,它们也一样很重要!对于法式员来说,切确知道你写的代码做了什么事很重要。这部分算是Django 性能优化的索引。
  • Geographic framework:这部分先容了若何利用Django 开辟GIS 系统,我在平常开辟中没有用到,不做过量说明。
  • Common Web application tools:这部分你会经常用到,触及用户系统、权限系统、缓存、日志、邮件发送、RSS、分页、消息处置、序列化、session、sitemap、静态文件治理和数据校验等。随用随查即可,你需要知道的是Django 供给了这些功用。
  • Other core functionalities:其他的一些焦点功用,比如ETag 设备、内容范例和通用关系(假如你需要增加自界说的权限设置,大概想方法会Django 的权限逻辑时,需方法会这部份内容)、页面治理App、页面重定向模块、信号模块(这也很常用,特别是当你筹算监听某个模子的数据操纵时)、静态检测系统、site 模块、Unicode 的利用等。随着对Django用得越多,这些工具渐渐地都可以把握。
  • The Django open-source project:这部分包括若何介入到Django 社区中,以及Django的公布流程、设想原则等一些社区文化类的文档。
总结
Django 文档已经相当棒了,很是完善,除了admin 部分写得不是很深入。这就触及别的一个话题,看文档还是看代码。关于admin 部分,倘使有较多的需求,倡议看完文档后去试探代码。假如你熟悉了前面先容的几个层,那末admin 代码对你来说也不是什么难事儿,甚至在某种情况下学得更快。
除了admin 部分,其他的文档上根基都有。不外也没有需要像背字典那样去看文档,有空䁖一眼,碰到题目䁖一眼。随实在践越来越多,对文档会越来越熟悉,对它的依靠会越来越少。Django 的代码结构跟文档一样分别清楚,所以我现在大部分的题目都是靠读代码来处理,而且这是一个可以不竭发生正向感化的方式,你越熟悉代码,越有助于写出更好的代码,越能了解Django 的源码思绪。
最初需要提到的一点是,不管是Django 文档还是其他文档材料,都仅供参考。正确的答案始终是在你电脑上的代码里。非论是框架版本的差别,还是文档上的誊写毛病,都能够会玩弄你,而你电脑上的代码始终不会骗你。
别的,能够有人会感觉Django 的文档这么多,这么多功用什么时辰才能充实把握呀!这个题目完全不用担忧,不管你挑选什么框架,一路头打仗的都是简单逻辑,随着利用经历的增加,你把握的技术也越来越多,对Django 的领会也越来越多。
对于挑选进修Django 来说,它供给了很清楚的利用线路,你不需要像进修其他框架那样,在入门以后还需要去网上网罗各类材料才能大白接下来要干什么。
是以,挑选进修Django,是一件性价比很高的工作。接下来,我们经过一个简单的例子来感受Django 的魅力。
<h1>学员治理系统的背景开辟

在上一节中,你领会了Django 所供给的功用,这一节就来实在体味一下,快速过一下Django的各个模块。你最好翻开熟悉的IDE(集成开辟情况),一路写起来。倡议你在Linux 上起头这个练习。不管你能否喜畛刳Linux 上做开辟,把握若何设置Linux 的开辟情况和摆设情况都是现实工作中没法绕过的门坎。
一、需求
我们先用一句话来描写需求:供给一个学员治理系统,其中有一个前台页面来展现现有学员,并供新学员提交申请,一个背景负责处置申请。
接下来,我们慢慢实现。
二、初始化情况
首先,建立虚拟情况:

DXCPICKPRE_0</pre>其中,最初的 -p 指明虚拟情况利用的是Python 3.6。不熟悉的可以看“利用virtualenv 建立虚拟Python 情况”,详见https://www.the5fire.com/virtualenv-python-env.html。大概利用python3.6 -mvenv student-env 来建立虚拟情况。
然后激活虚拟情况:

DXCPICKPRE_1</pre>假如是前面的建立方式,需要经过source student-env/bin/activate 来激活。接着,安装Django,本誊写作时的最新版为1.11:

DXCPICKPRE_2</pre>这里诠释一下,~=暗示安装指定版本的最新版,这里会去安装Django 1.11.x 版本,x 暗示1.11版本的最新版的小版本号。
三、建立项目
虽然可以不建立虚拟情况就安装Django,可是我还是倡议你在虚拟情况中安装,由于在现实开辟中,你能够需要保护不止一个项目。分歧项目所依靠库的版本也分歧,假如你都安装到root大概user 下,会出现抵触。
好了,切换到你喜好的目录中,比如 /home/the5fire/workspace/。然后,建立项目根目录:mkdir student_house,这是我们的项目目录。接着,再来建立项目:cd student_house && django-admin startproject student_sys(留意:要保证上面的虚拟情况是激活状态)。
此时我们能获得下面的结构:

Django 小试牛刀

Django 小试牛刀  科技资讯 130216v3kk73c3x763xij6


四、建立App
进入student_house/student_sys 中,经过上一步建立好的manage.py 建立一个App:python manage.py startapp student。现在目录结构以下:

Django 小试牛刀

Django 小试牛刀  科技资讯 130216kah56vssrsca68a8


建立好以后,我们起头编写代码。
五、编写代码
我们可以在Model 层起头写代码了,这是一个简单的需求,只需要一个Model 便可以满足。在文件student_house/student_sys/student/models.py 中编写以下代码:()

DXCPICKPRE_3</pre>
代码说明:假如是基于Python 3.6 的代码,可以去掉最上面的两行coding: utf-8 以及from__future__ import unicode_literals。这里加上这两行,是为了兼容Python2.7。这意味着,假如你们公司今朝整体是基于Python 2.7 的,那应当只管在代码上加上这两行,方便以落后行升级。
再来写admin.py:

DXCPICKPRE_4</pre>写完这两个设置,Model 和admin 的界面就行了。接下来,我们把student 这个App 放到settings.py 中。
我们只需要在INSTALLED_APPS 设置的最初大概最前面增加'student'即可。
settings.py 文件以下:

DXCPICKPRE_5</pre>好了,背景部分完成了。接着,我们经过下面的号令建立表以及超级用户。

  • cd student_house/student_sys/:假如你已经在student_sys 目录下,就不用切换目录了。
  • python manage.py makemigrations:建立数据库迁移文件。
  • python manage.py migrate:建立表。
  • python manage.py createsuperuser:按照提醒,输入用户名、邮箱和密码。
此时经过 python manage.py runserver 号令启动项目后,拜候 http://127.0.0.1:8000,会看到一个提醒页,这是由于我们还没开辟首页。我们可以进入到admin 的页面:http://127.0.0.1:8000/admin/。用你建立好的账户登录,就能看到一个完整的带有CURD 的背景了。
六、根本设置(中文)
经过上面的设置,你看到的界面应当是英文的,而且时区也是UTC 时区,所以需要进一步设置。
在settings 中做以下设置:

DXCPICKPRE_6</pre>点窜完这些以后,革新一下试试。你可以尝试点窜上面的设置,看看别离对应什么功用。
到这一部分,我们根基完成了admin 的部分。鄙人一节中,我们来完成页面提交数据的部分,看下若何利用Form。
七、总结
对于简单的背景需求,经过admin 很轻易满足,这也是Django admin 被称为“杀手锏”的缘由。
<h1>学员治理系统的前台开辟

有了上一节中Model 和admin 的部分,我们已经获得一个治理背景了。接着,我们来做一个简单的用户提交申请的表单页面。
一、开辟首页
首先,在student/views.py 文件中编写下面的代码:

DXCPICKPRE_7</pre>我们界说了函数index,其参数是request,它是Django 对用户发送过来的HTTP 请求的封装。从request 工具上,我们能获得一些有用的信息。在函数最初,我们用Django 供给的一个快速方式render 来衬着页面,其中利用了模板文件index.html。我们需要在student 目录下建立templates 文件夹,这个文件夹是Django 在衬着页面时会默许查找的。
这部分需要多说几句。Django 在衬着模板大概静态页面时,会去每个App 下查找,这里说的App 就是settings.py 文件中设置的INSTALLED_APPS 中的App。Django 会去这些App 目录下的templates 文件夹查找你在render 上用到的模板,而且是顺序查找的(从上到下)。这意味着,假如你有两个App,比如studentA 和studentB,若这两个App 中都存在templates/index.html,那末Django 会加载位置在前的阿谁App 的index.html 文件。静态文件也是一样的逻辑,你可以自行尝试。经过这类方式,我们也可以覆盖admin 的部分模板。不外这是基于Django 内置的法则,有些隐晦。假如可以经过其他方式处理,不倡议利用这类途径覆盖的方式。
建立好templates/index.html 以后,我们起头编写页面代码:

DXCPICKPRE_8</pre>这里面只用到一个Django 的模板语法——{{ words }}。这里需要留意,words 两侧的空格是根据“Django 编码标准”(详见https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/)来写的。这个语法的意义就是从高低文中获得到words 变量。这个变量是在index 中挪用render 时传递过来的。
接着,再设置一下URL,也就是供给一个URL 映照,可以让用户拜候URL 时把数据发送到我们界说的index 这个View 上。
我们间接点窜student_sys 目录下的urls.py 文件:

DXCPICKPRE_9</pre>然后经过python manage.py runserver 号令再次启动项目,拜候http://127.0.0.1:8000,就能看到输出的Hello World!!了。
二、输出数据
接下来的工作就是把数据从数据库内里面取出来,衬着到页面上。你可以先在admin 背景建立几条学员数据,以便于测试。
我们需要点窜views.py 中的代码:

DXCPICKPRE_10</pre>先诠释一下上面代码的意义:index 函数已经界说过了,也好了解,内部逻辑做了一些调剂。首先,经过Student 模子拿到一切的student 数据,接着把数据放到context 里面传递到模板中。
接着,点窜index.html 中的代码:

DXCPICKPRE_11</pre>这样我们就输出了一个简单的列表,展现了学员称号和今朝状态。这里有一个地方需要留意,那就是{{ student.get_status_display }}。在Model 中我们只界说了status 字段,并未界说这样的字段,为什么能经过这类方式取到数据呢?而且在admin 中,也没有益用这样的字段。
缘由就是,对于设备了choices 的字段,Django 会帮我们供给一个方式(留意是方式),用来获得这个字段对应的要展现的值。回头看看status 的界说:

DXCPICKPRE_12</pre>在admin 中,展现带有choices 属性的字段时,Django 会自动帮我们挪用get_status_display方式,所以不用设置。而在我们自己写的模板中,这需要自己来写。而且为了简化模板的利用,默许只支持无参数的方式挪用,你只需要写方式称号即可,前面的括号不能写,Django 会自行帮你挪用(假如是方式的话)。
三、提交数据
输出数据以后,我们再来开辟提交数据的功用,这部分我们用一下Form。
首先,建立一个forms.py 文件,它跟views.py 同级。编写以下代码:

DXCPICKPRE_13</pre>这个StudentForm 的界说能否是很熟悉?它跟Model 的界说类似,那末我们能不能复用Model 的代码呢?答案是:可以。还记得3.1 节文档先容的部分吗?有一个ModelForm 可以用。
我们来改一下:

DXCPICKPRE_14</pre>只需要这么改就行了,不需要反复界说N 多个字段。倘使有点窜对应字段范例的需求,比如把qq 改成IntegerField 来做数字校验,也是可以声明出来的。固然,我们也可以经过界说clean 方式的方式来做。我们来改一下代码,增加QQ 号必须为纯数字的校验:

DXCPICKPRE_15</pre>其中clean_qq 就是Form 会自动挪用来处置每个字段的方式。比如,在这个Form 中,你可以经过界说clean_phone 来处置电话号码,可以界说clean_email 来处置邮箱等。假如考证失利,可以经过raise forms.ValidationError('必须是数字!')的方式返回毛病信息,这个信息会存储在Form中,终极会被我们衬着到页面上。
有了Form,接下来需要做的就是在页面中展现Form,让用户可以填写信息提交表单。同时对于提交的数据,我们需要先做校验,通事后再将其保存到数据库中。我们来看看views.py 终极的样子:

DXCPICKPRE_16</pre>里面有一个form.cleaned_data 工具,它是Form 按照字段范例对用户提交的数据做完转换以后的成果。别的,还用了reverse 方式。我们在urls.py 中界说index 的时辰,声了然name='index',所以这里可以经过reverse 来拿到对应的URL。这么做的益处是,不需要硬编码URL 到代码中,这意味着假如今后有点窜URL 的需求,只要index 的称号稳定,这个地方的代码就不用改。
上面我们经过手动构建Student 工具的方式来保存Student 数据。实在在ModelForm中,由于有了Model 的界说,手动构建Student 工具的步调可以省掉,我们可以将代码点窜以下:

DXCPICKPRE_17</pre>对于HTTP GET 请求的数据,最初我们会把StudentForm 的道侥0逯,这样用户终极才能看到一个可以填写数据的表单。要在模板中加form,是相当简单的一件事。终极模板index.html 的代码以下:

DXCPICKPRE_18</pre>其中{% csrf_token %}是Django 对提交数据平安性做的校验,这意味着,假如没有这个token,提交曩昔的数据是无效的。这是用来避免跨站捏造请求进犯的一个手段。在Web 开辟中,倘使有类似需求的话,这也是我们可以用来参考的技术点。
只需要这么写,Django 就会帮我们自动把一切字段列出来。固然,假如需要调剂款式,就要经过自己增加CSS 款式文件处理了。
四、优化数据,获得逻辑
在上述代码中,我们在view 函数中经过students = Student.objects.all()的方式获得到了一切学员的数据,可是这类方式在现实利用中会有题目。由于前期能够会对学员的数据停止过滤,比如需要调剂为展现一切考核经过的学员,此时就需要调剂view 函数中的代码。大概对成果停止缓存,也需要调剂代码。
是以,可以把数据获得逻辑封装到Model 层中,对上表露更语义化的接口。我们来稍微调剂一下。
给models.py 中的Student 模子增加一个类方式:

DXCPICKPRE_19</pre>同时点窜views.py 中的代码:

DXCPICKPRE_20</pre>这样前期再点窜需求时,只需要点窜get_all 这个函数即可,修改的影响范围就小了很多。
五、总结
到此为止,功用上已经完整。你可以再次经过号令python manage.py runserver 启动项目,拜候http://localhost:8000,看看页面上的功用能否可用。按照自己的想法调剂代码,频频运转并检察结果,以便于了解Form的感化。
<h1>总结

这一部分中的三个(还有一个文中未说起)技术点有助于你一路头就建立好一个完整的模子,可以帮助你更好地了解Django。不外假如要更好地把握这些内容,需要进一步理论才行。你需要做的就是把本文的代码完整敲一遍,然后按照自己的了解改改代码,接着不竭地运转测试。
本文就到这里,翻开你熟悉的IDE,起头运转上面的代码吧,会有很多收获。
——本文节选自《Django企业开辟实战:高效Python Web框架指南》

Django 小试牛刀

Django 小试牛刀  科技资讯 130216britd0cliqiczyil


资深开辟工程师the5fire多年开辟经历总结。
以从零开辟一个博客系统为例,先容Django在平常工作中的利用。
本书共分为四部分。第一部分先容编码之前的预备工作,包括需求分析、Web开辟根本以及选型时Demo的练习。第二部分隔始正式实现需求,先容了情况设置、编码标准以及公道的项目结构分别。经过对Django各部分(Model、Form、admin、View)的先容和利用,完成了一个根本的博客系统。第三部分在前面的根本上先容Django第三方插件的利用,经过引入这些插件进一步增强我们的系统。最初一部分也是正式工作中必不成少的部分,包括调试代码、优化系统、压力测试以及自动化等内容。
——
你需要花费更多的时候来进修 Django,这是由于它供给的内容远多于其他框架。刚起头,能够会感觉很多地方不大白,可是等你熟悉了以后就会发现,在 Web 利用开辟上,Django 已经供给了很完整的支持,比如登录认证、权限治理、admin 治理背景、缓存系统、常见的 Web 平安防御等。Django 每一层大概模块所供给的功用都很清楚,比如什么样的需求在哪一层来处置,大概在哪个模块中处置。
Django 一路头的进修曲线有点陡,然后是陡峭上升的。先陡主如果由于新手需要一会儿接管很多工具,可是随着前面不竭利用和领会,你会发现,进修所花费的时候完全值得。你可以更快地做出完善的系统,这会是一笔很划算的投资。
第一部分 初入江湖
第1章 需求
第2章 框架根本和技术选型(到图灵社区阅读:http://www.ituring.com.cn/book/tupubarticle/25223)
第3章 Django小试牛刀
第二部分 正式开辟
第4章 进入开辟
第5章 奠基项目基石:Model
第6章 开辟治理背景
第7章 开辟面向用户的界面
第8章 引入前端款式框架Bootstrap
第9章 完成全部博客系统
第三部分 第三方插件的利用
第10章 利用第三方插件增强治理背景
第11章 利用django-rest-framework
第四部分 上线前的预备及线上题目排查
第12章 调试和优化
第13章 设置MySQL缓和存
第14章 上线前的预备
第15章 升级到Django 2.0
第16章 最初总结
附录A 利用Fabric 2.0
附录B 利用uWSGI来启动Django法式
附录C Sentry安装和设置
附录D 批评考证码功用
附录E 经过signal来解耦代码
附录F 实现文章置顶的几种计划
附录G 以腾讯云为例演示摆设流程
感谢您的阅读
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 快猫网-人工智能和智能硬件领域的互联网科技媒体 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表