django笔记
django
Django 模板
html
1.变量:用两个大括号括起来的文字(例如 {{ person_name }} )是 变量 (variable) 。这意味着将 按照给定的名字插入变量的值。
2.模板标签:被大括号和百分号包围的文本。DJANGO内建很多模板标签和过滤器。block,extends,filter,comment,cycle,debug,for,if。
(例如 {% if ordered_warranty %} )是 模板标签 (template tag) 。标签(tag)定义比较明确,即:仅通知模板系统完成某些工作的标签。
3.filter 过滤器,它能让你用来转换变量的输出.例如 {{ship_date|date:“F j, Y” }} 将变量 ship_date 用 date 过滤器来转换, 转换的参数是 “F j, Y” .
date 过滤器根据指定的参数进行格式输 出.过滤器是用管道字符 ( | )来调用的,就和 Unix 管道一样.
参数传递
网页模板:“My name is {{ name }}.”)
字典映射:context 在 Django 里表现为 Context 类,在 django.template 模块里。 它构造是有一个可选参数:一个字典映射变量和它们的值。例如:c = Context({“name”: “Stephane”})
调用 Template 对象 的 render() 方法并传递 context 来填充模板: t.render©
模板标签的使用
if
{% if today_is_weekend %} <p>Welcome to the weekend!</p> {% else %} <p>Get back to work.</p> {% endif %}
模板标签在 python 中空的列表 ( [] ),tuple( () ),字典( {} ),字符串( ‘’ ),零( 0 ),还有 None 对象,在逻辑判断中都为假,其他的情况都为真。
for
{% for %} 允许我们在一个序列上迭代。与 Python 的 for 语句的情形类似,循环语法是 for X in Y ,Y 是要迭代的序列而 X 是在每一个特定的循环中使用的变量名称。每一次循环中, 模板系统会渲染在 {% for %} and {% endfor %} 中的所有内容。
例如,给定一个运动员列表 athlete_list 变量,我们可以使用下面的代码来显示这个列表:
<ul> {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% endfor %} </ul>
注释
象 HTML 和其他的语言例如 python 一样,Django 模板系统也允许注释。 注释使用 {# #} :
{# This is a comment #}
注释的内容不会在模板渲染时输出。
注释不能跨多行
过滤器
模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤 器看起来是这样的:
{{ name|lower }}
显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写。
使用 | 来应用过滤器。
include 模板标签
该标签允许在(模板中)包含其它的模板的内容。标签的参数是所要包含的模板名称,可以 是一个变量,也可以是用单/双引号硬编码的字符串。
每当在多个模板中出现相同的代码时, 就应该考虑是否要使用 {% include %} 来减少重复。
下面的例子包含了 includes/nav.html 模板的内容:
{% include ‘includes/nav.html’ %}
下面的例子包含了以变量 template_name 的值为名称的模板内容:
{% include template_name %}
*在 Django 模板中是不可能直接调用 Python 代码的
!
render_to_response()
由于加载模板、填充 context 、将经解析的模板结果返回为 HttpResponse 对象这一系列操 作实在太常用了,Django 提供了一条仅用一行代码就完成所有这些工作的捷径。
该捷径就是 位于 django.shortcuts 模块中名为 render_to_response() 的函数。大多数时候,你将使 用 render_to_response() ,而不是手动加载模板、创建
Context 和 HttpResponse 对象。
下面就是使用 render_to_response() 重新编写过的 current_datetime 范例。
from django.shortcuts import render_to_response import datetime def current_datetime(request): now = datetime.datetime.now() return render_to_response('current_datetime.html', {'current_date': now})
模型
Django 提供了实用工具来从现有的数据库表中自动扫描生成模型。 除非你指定,否则 Django 会自动为每个模型创建一个叫做 id 的主键。每个 Django 模型必须要有一个单列主键。 python manage.py validate 检查你的模型的语法和逻辑是否正确。如果一切正常,你会看到 0 errors found 消息 __str__() 方法告诉 Python 要怎样把对象当作字符串来使用 请确保你的每一个模型里都包含 __str__() 方法,这不只是为了交互时方便,也是因为 Django 会在其他一些地方用 __str__() 来显示对象。 要保存这个记录到数据库里(也就是执行 INSERT SQL 语句),调用对象的 save() 方法: >>> p.save() 接下来再调用 save() 将不会创建新的记录,而只是修改记录内容(也就是 执行 UPDATE SQL 语句,而不是 INSERT 语句): >>> p.name = 'Apress Publishing' >>> p.save() 查找所有数据的方法了: >>> Publisher.objects.all() 数据过滤 如果想要获得数据的一个子集,我们可以使用 filter() 方法: >>> Publisher.objects.filter(name="Apress Publishing") [<Publisher: Apress Publishing>] >>> Publisher.objects.filter(name__contains="press") [<Publisher: Apress Publishing>] 在 name 和 contains 之间有双下划线。象 Python 自己一样,Django 也使用 双下划线来做 一些小魔法,这个 __contains 部分会被 Django 转换成 LIKE SQL 语句: name LIKE '%press%'; 有时你只想获取单个对象,这个时候使用 get() 方法: >>> Publisher.objects.get(name="Apress Publishing") <Publisher: Apress Publishing> 所以,如果结果是多个对象或者没有返回结果,也会导致抛出异常 数据排序 order_by() 来 排列 返回的数据: >>> Publisher.objects.order_by("name") [<Publisher: Apress Publishing>, <Publisher: Addison-Wesley>, <Publisher: O'Reilly>] 我们还可以指定逆向排序,在前面加一个减号 - 前缀 限制返回的数据 另一个常用的需求就是取出固定数目的记录。想象一下你有成千上万的出版商在你的数据库 里, 但是你只想显示第一个。你可以这样做: >>> Publisher.objects.all()[0] 删除对象 要删除对象,只需简单的调用对象的 delete() 方法: >>> p = Publisher.objects.get(name="Addison-Wesley") >>> p.delete( 你还可以批量删除对象,通过对查询的结果调用 delete() 方法: >>> publishers = Publisher.objects.all() >>> publishers.delete()
djangoadmin
admin.site.register(SalaryItem,SalaryItemAdmin) #注册model类到admin @admin.register(Book) #使用register的装饰器
- 点赞
- 收藏
- 分享
- 文章举报
- Django学习笔记 (一) 开发环境配置
- Django学习笔记1
- Django笔记-Forms
- Django学习笔记之博客开发(二)
- Django 手册 学习 心得 笔记
- django 新闻编辑笔记
- Django学习笔记1 url、视图和模板
- django1.5学习笔记(1)
- django学习笔记3:视图与路由
- 咸鱼笔记—Django模型(数据库配置)
- Django搭建简单网页的学习笔记 之一(models)
- python 笔记 安装django
- python课堂笔记之django-day01(1)
- 【django 学习笔记】06-表单
- Django-CMS 学习笔记之安装篇——Django-Sekizai用法
- 咸鱼笔记—Django模型(查询3)
- Django 开发学习笔记(4)- 关于数据 ORM
- 咸鱼笔记—Django登录案例(简)
- Django 学习笔记 看文档,一步步写(待续ing)
- Django学习笔记(二)----签到设计逻辑及数据库基本操作API