上篇带大家简单做了一下图书表的创建、简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改还是删除等很多操作都是建立在查数据的基础上。

 

本篇导航:

 

今天所有例子用的延续上篇的数据库,book表也是延续上篇,接着昨天的建表,删除等功能扩展其他功能,所以有所疑问的可以先看上篇随笔:

http://www.cnblogs.com/liluning/p/7729607.html

 

一、添加

1、添加表记录

1)方式一

book_obj = models.Book(nid=nid,title=title,author=author,publishDate=publishDate,price=price)
book_obj.save() # 将数据保存到数据库

2)方式二

#book_obj可以得到返回值
book_obj=models.Book.objects.create(title=title,author=author,publishDate=publishDate,price=price)

2、template模版

1)首页的添加按钮

<a href="/addBook/"><button class="btn btn-primary">添加书籍</button></a>

2)添加页面的提交表单

<form action="/add/" method="post">
{% csrf_token %}
    <tr>
        <td><input type="text" name="title"></td>
        <td><input type="text" name="author"></td>
        <td><input type="date" name="publishDate"></td>
        <td><input type="text" name="price"></td>
        <td>
            <button class="btn btn-info">提交</button>
        </td>
    </tr>
</form>

{% csrf_token %}之前说过 安全机制 在post请求中使用

3、url 分发

url(r'^add/', views.addBook),

4、视图函数views

def addBook(request) :
    if request.method == "POST" :
        nid = request.POST.get("nid")
        title = request.POST.get("title")
        author = request.POST.get("author")
        publishDate = request.POST.get("publishDate")
        price = request.POST.get("price")
        # book_obj = models.Book(title=title,author=author,publishDate=publishDate,price=price)
        # book_obj.save()  # 将数据保存到数据库
        book_obj = models.Book.objects.create(title=title, author=author, publishDate=publishDate, price=price)
        return redirect("/index/")
    return render(request, "add.html")

先讲拿到表单提交的数据 然后添加到表

添加表用那一个方式都可以 推荐方式二


 

二、单表查询

1、查询相关API

一定区分object与querySet的区别

昨天已做介绍:
<1> all():
<2> filter():
 
<3> get():         
返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。(慎用)
<4> exclude():     
它包含了与所给筛选条件不匹配的对象
<5> values():        
返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
<6> values_list():   
它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<7> order_by():     
 对查询结果排序
<8> reverse():             
对查询结果反向排序
<9> distinct():           
 从返回结果中剔除重复纪录
<10> count():             
 返回数据库中匹配查询(QuerySet)的对象数量。 
<11> first():              
返回第一条记录
<12> last():               
返回最后一条记录 
<13> exists():             
如果QuerySet包含数据,就返回True,否则返回False
View Code

相关文章: