get_object_or_404() 是通过调用get()方法从model管理器上获取数据, 如果对象不存在,它会报Http404的异常,而不是model的 DoseNotExist异常. get_list_or_404() 则是返回          model管理器的filter()方法后,转化成List后的结果 . 如果这个结果(换句话说这个列表)  是空的,它会报Http404的异常…
RedirectView作用是重定向一个指定,给定的Url.这个给定的Url可能包含有字典风格的字符串,因为关键字(词)会被改变,所以从这个Url中捕获的参数可能也会被修改,例如,Url中的“%”应该写成“%%”这样python才会将其修改成“%”. 如果指定的Url是None,那么会触发:HttpResponseGone (410) 处理流程:1.dispatch()2.http_method_not_allowed()3.get_redirect_url() 官例: #views.py fr…
Django 1.6 最佳实践: 怎样正确使用 CBVs (Class-based views) Class-based views是Django为解决建站过程中的常见的呈现模式而建立的. 在这节中, 我们着重讲一下CBVs的使用技巧和一般原则. 1. CBVs的使用原则 代码越少越好 永远不要反复代码 View应当仅仅包括呈现逻辑, 不应包括业务逻辑 保持view逻辑清晰简单 不要将CBVs用作403, 404, 500的错误处理程序 保持mixin简单明了 2. 怎样使用mixin 在编程中…
ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request): return HttpResponse('hello world') 上面的写法,基本接触不到视图函数里面的通用视图.只是在介绍CBV的时候稍微介绍了下引用,大概用法. 导入 之前的导入一直用的是 from django.views import View 这里从view下钻一下会发现: from djan…
django是mvt模式,其中v就是这个显示逻辑部分,简单来讲,view函数可以说是接收request,然后处理,返回response的主体函数. 对于一些简单的逻辑关系,可以用直接用函数模式来进行处理. def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now re…
你应该使用 Django admin 的 9 个理由 “问题是,我问到的每个人都持反对意见,他们认为 admin 只限于超级用户,很不灵活并且是难以定制.”—来自 Reddit 的 andybak 我现在要澄清这个误解.Django 的 admin 绝对是软件中的亮点,可以有效的加速你的开发. 这里有一些我能想到的很有用的 Django 的 admin 模块的窍门. (对于 Django admin 不太熟悉的人,先简单解释几个名词) Changeform 是可以编辑对象的页面. Changel…
Django写的多了,有些问题才逐渐认识到. 比如有一个view比较复杂,调用了很多其他的函数.想要把这些函数封装起来,怎么办? 当然,可以用注释#------view------这样将函数隔离开,这种方法太low了,简直是在骗自己,连封装都算不上.Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种:(1)提高了代码的复用性,可…
Tip 1:Django admin 后台不限于用 Django 开发的网站 虽然 Django admin 管理界面可以非常友好的用在 Django 项目的其它部分,它同样可以很容易用于其它像传统的数据库或具有一个可怕的的管理界面的网站.而且这也是评估 Django 是否会满足您的需求的最佳途径. 你需要做的仅是: 在你的 Django 项目中建立一个新的应用,并确保你已经连接好传统数据库 ,通过 settings.py 文件中的 DATABASES 的设置. 将你的数据表定义为 Django…
1.1. 编辑界面 默认任务的编辑界面,对于model属性包含"choices"会自动显示下来列表供选择,"datetime"数据类型也默认提供时间选择组件,如下图: 注意:"auto_now_add=True"的属性默认不会显示在编辑界面,外键字段会自动加载关联表数据,如上图操作员属性. 1.1.1. 设置要显示的模型属性 我们可以通过设置不显示操作员选项,代码如下: fields=('TaskNum','Source','Target',Ba…
本章我们演示代码是如何"进化"的,实战的企业日常开发过程中,系统功能总伴随着业务的不断增加,早期简单的代码慢慢的越来越复杂,敏捷编程中的"禅"--简单设计.快速发布.获得反馈.快速开发的迭代循环过程,如何保证迭代过程持续交互合格的代码,代码重构和单元测试是非常重要的手段.单元测试用来保证重构的代码先满足原来的测试逻辑,代码结构优化满足新的业务需求扩展,然后开发增加新的功能.新的单元测试,每一轮迭代发布新的功能,获取用户反馈- 上一章功能完成的时候,你发现当前的adm…