django基础之视图

1.在Django中网页前端的页面和其他内容都是由视图来传递的(视图对web请求进行回应)Django通过检查请求的URL(准确地说,是URL里域名之后的那部分)来选择使用哪个视图。

2.每个视图函数或者类只负责处理两件事中的一件

  • 返回一个包含所有请求页面内容的HttpResponse对象
  • 抛出一个诸如HTTP404异常

你的视图可以数据库里读取记录,或者动态生成一个PDF文件,输出XML文件,或者你想用Python库生成任何你想要的形式全看你自己的想法了

django基础之模型

一旦建立好数据模型,Django会自动为你生成一套数据库抽象的API,可以让你创建、检索、更新和删除对象。

1.创建和保存对象

Django使用一种直观的方式把数据库表中的数据表示成Python对象:一个模型代表数据库中的一个表,一个模型的实例代表数据库中的一条特定的记录。

#在你显式调用save()之前,Django 不会访问数据库。
#save() 方法没有返回值。 >>> from blog.models import Blog
>>> b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
>>> b.save() #保存对象的改动
>>> b5.name = 'New name'
>>> b5.save() #上面例子Blog 的一个实例b5 已经被保存在数据库中,下面这个例子将更改它的name 并且更新数据库中的记录 #如果你想只用一条语句创建并保存一个对象,使用create()方法。
>>>p = Person.objects.create(first_name="Bruce", last_name="Springsteen")

保存ForeignKeyManyToManyField字段

  • 更新ForeignKey 字段的方式和保存普通字段相同 —— 只要把一个正确类型的对象赋值给该字段。下面的例子更新了Entry 类的实例entry 的blog 属性,假设Entry 和Blog 分别已经有一个正确的实例保存在数据库中(所以我们可以像下面这样获取它们):
>>> from blog.models import Entry
>>> entry = Entry.objects.get(pk=1)
>>> cheese_blog = Blog.objects.get(name="Cheddar Talk")
>>> entry.blog = cheese_blog
>>> entry.save()
  • 更新ManyToManyField 的方式有一些不同 —— 需要使用字段的add()方法来增加关联关系的一条记录。下面这个例子向entry 对象添加Author 类的实例joe
 
>>> from blog.models import Author
>>> joe = Author.objects.create(name="Joe")
>>> entry.authors.add(joe) #为了在一条语句中,向ManyToManyField添加多条记录,可以在调用add()方法时传入多个参数 >>> john = Author.objects.create(name="John")
>>> paul = Author.objects.create(name="Paul")
>>> george = Author.objects.create(name="George")
>>> ringo = Author.objects.create(name="Ringo")
>>> entry.authors.add(john, paul, george, ringo)

2.获取对象

  通过模型中的管理器构造一个查询集,来从你的数据库中获取对象。

查询集:从数据库取出来的对象集合,可以是零个,一个或者多个过滤器(过滤器为基于所给的参数限制查询的结果)

从SQL的角度,查询集同SELECT语句等价,过滤器是像WHERE和LIMIT一样的限制字句。

你可以从模型的管理器里面取得查询集,每个模型至少有一个管理器,默认命名为objects,通过模型对象来直接访问他。

>>> Blog.objects
<django.db.models.manager.Manager object at ...>
>>> b = Blog(name='Foo', tagline='Bar')
>>> b.objects
Traceback:
...
AttributeError: "Manager isn't accessible via Blog instances." #管理器只可以通过模型的类访问,而不可以通过模型的实例访问,目的是为了强制区分“表级别”的操作和“记录级别”的操作。 #对于一个模型来说,管理器是查询集的主要来源。例如,Blog.objects.all() 返回包含数据库中所有Blog 对象的一个查询集。

  

Django开发笔记的更多相关文章

  1. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  2. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  3. Django开发笔记四

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.邮箱激活 users app下,models.py: ...

  4. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  5. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  6. Django开发笔记一

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.运行 python manage.py runser ...

  7. Django开发笔记(一)

    Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...

  8. Django开发笔记之数据库的设计

    后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原 ...

  9. django 开发笔记1

    1.布置到云服务器 使用 python3 manage.py runserver提示错误,需要将settings.py 中 ALLOWED_HOSTS 字典中加入 localhost;0.0.0.0; ...

随机推荐

  1. css3中变形函数(同样是对元素来说的)和元素通过改变自身属性达到动画效果

    /*对元素进行改变(移动.变形.伸缩.扭曲)*/ .wrapper{ margin:100px 100px auto auto; width:300px; height:200px; border:2 ...

  2. docker容器与容器云读书笔记1

    搭建docker应用栈 操作系统: ubuntu 16.04.1 LTS 桌面版 1. 准备工作 换网易源, gedit 会报一个metadata的告警, 不用理会, sudo apt-get upd ...

  3. [转]Android静态变量的生命周期

    原文地址:https://my.oschina.net/jerikc/blog/137207 Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的 ...

  4. IE8 下 iframe 滚动条的问题

    //设置滚动条                $("iframe[name='updateFocalWork']").attr("scrolling", &qu ...

  5. 只有IE64位能上网。

  6. Swift - 3.0之GCD学习

    import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...

  7. 浅谈redis和memcached的区别

    缓存技术方面说到redis大家必然会联想到memcached,了解它们的人应该都知道以下几点吧 redis与 memcached相比,redis支持key-value数据类型,同事支持list.set ...

  8. wifi的country code

    转自:http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.htmlCountry A 2 A 3 Number ------------- ...

  9. Centos7 关闭防火墙(转)

    转载地址:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html CentOS 7.0默认使用的是firewall作为防火墙 ...

  10. Java基础学习(四)

    流程控制 /* 控制流程语句之---if 判断语句 格式一: 只适用于一种情况下去使用. if(判断条件){ 符合条件执行的代码; } 格式二:适用于两种情况下去使用 if(判断条件){ 符合条件执行 ...