官网教程 DjangoBook
Models 模型
一个类代表一个模型
类中的属性对应了对应数据表的数据
*makemirgations命令生成数据库脚本(还未同步过数据库,第一次要用到) - > migrate 生成更新对应的数据字段等(数据库内)
模型的取名不要和django.models自带的API重名(增删改查啥的)
Form 表单
- HttpRequest对象还有两个属性包含了用户所提交的信息: request.GET 和 request.POST。二者都是类字典对象,你可以通过它们来访问GET和POST数据。
模板 Template
{{ }} :变量
{% %}:模板标签 //通知模板系统完成某些工作的标签
1. 创建模板对象
2.模板渲染 //传递变量数据给它
*这里使用了RequestContext处理器,也可以用Context处理器实现,或render直接一步实现
**使用Django模板系统的基本规则: 写模板,创建 Template 对象,创建 Context , 调用 render() 方法
**模板中的{{}},在view里写的时候,对应的可以调用key的value属性,也可以是key的方法(名)(只能调用不需参数的方法),也可以是访问列表索引(不允许使用负数列表索引)(字典key:value)
当模板系统在变量名中遇到点时,按照以下顺序尝试进行查找:
字典类型查找 (比如 foo["bar"] )
属性查找 (比如 foo.bar )
方法调用 (比如 foo.bar() )
列表类型索引查找 (比如 foo[bar] )
**{{person.name.upper}} 也可以多层的先找person的属性name,在调用upper方法
3.基本的模板标签和过滤器
标签{% %}: //都可以多层嵌套
- if/else/endif
*else都是可选的而已
*{% if ____ %} 标签__内接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not )
*{% if %} 标签不允许在同一个标签中同时使用 and 和 or ,因为逻辑上可能模糊的
*一定要用 {% endif %} 关闭每一个 {% if %} 标签
for/endfor(循环)
*forloop.counter 就类似计数器一样不过是从0开始的
{% for item in todo_list %}
<p>{{ forloop.counter }}: {{ item }}</p>
{% endfor %}
ifequal/ifnotequal
*比较两个参数是否一致。参数可以用单双引号包起来
{% ifequal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}
**只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数
- 注释
{# #}
要实现多行注释,可以使用`` {% comment %}/{% endcomment %}`` 模板标签
- 过滤器
模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符 //{{ name|lower }} name变量显示到页面上全部都是小写了
*可以有多个|;有些过滤器有参数;