14 Jun 18
一、内容回顾
1. URL写法:127.0.0.1:8000/edit_publisher/?id=1&name=zhangzhao&age=16
a. 用&连接多个条件
b. ?前的/可以省略
c. URL中不能有空格
2. form表单中的action如果传空,默认返回当前页面。
应用:对一些跳转页面,可以手动拼接id等信息,亦可传空,默认跳转
3. 以编辑书籍为例, 如果method是POST执行一段代码,如果method不是POST执行另一段代码。
通过连接直接跳转改路径/页面触发的不是POST方法;当在编辑书籍页面提交form表单触发的是POST方法。
二、今日内容
1. 删除、编辑书籍信息
2. Django的模板语言(字符串替换的规则)
1. {{变量}} {{变量.属性}}
2. for循环
{% for i in xx %}
{{i}}
{% endfor %}
{{ forloop.counter }} --> 计数
{% empty %} -->如果for循环的列表为空的时候显示的内容
3. if判断
{% if 条件%}
条件成立要做的事儿
{% else %}
条件不成立要做的事儿
{% endif %}
3. 作者增删改查 (作者和书是多对多的关系book author book2author)
1. 作者关联的书有多个 (我们怎么通过Django 的ORM 取到和我这个作者关联的所有书)
author_obj.books --> none; 在author表中没有book列
author_obj.books.all() --> 该作者所著书籍对象的列表
# 在html的模版语言中不加(),即用author_obj.books.all,django会自动帮忙处理拼接
2. 如何在页面上展示出 我这个作者关联的所有的书籍
# 在html的模版语言中不加(),即用author_obj.books.all,django会自动帮忙处理拼接
{% for book in author_obj.books.all%}
{% if forloop.last%} #最后一个值
{{book.title}}
{% else %}
{{book.title}},
{%endif%}
{% endfor %}
3. 如何更新作业关联的书籍
author.books.set(new_book_ids)
# 该操作执行之后,会执行自动保存操作; 故,之后不需.save()手动保存
4. 当出现黄页时,看trackback,标成深色的即为出错位置
5. request.POST.get(),只能用于取一个值的情况
request.POST.getlist(),可用于取多个值(以列表形式)。通常如果html中出现select multiple或checkbox的时候,可能会用到getlist
6. 如果想设置默认跳转,在url中添加
url(r'^$', views.publisher_list)