Django学习内容

----django
    ---MTV
    ---cookie session
    ---form组件
    ---中间件
    ---alax


----博客系统

----权限组件

----stark组件

----crm系统

----爬虫

----金融分析

----REST framework + Vue

 

自学内容

----rest-framework
----flask

预备知识

----jquery
----bootstrap
----django
----ajax

有名分组

Including other URLconfs(路由分发)

#At any point, your urlpatterns can “include” other URLconf modules. This
#essentially “roots” a set of URLs below other ones.

#For example, here’s an excerpt of the URLconf for the Django website itself.
#It includes a number of other URLconfs:


from django.conf.urls import include, url

urlpatterns = [
   url(r'^admin/', admin.site.urls),
   url(r'^blog/', include('blog.urls')),
]

 

url反向解析(使用url 模板标签)

用途:login.html中填写  本URL地址,为了将来不会因为url地址更改,而更改html内容,这里采用别名方式。

wsgiref模块

wsgiref  把请求信息封装成request对象

wsgiref  把请求体组装成响应体格式

 

视图(views)中函数的参数 request

Template(模板层)---渲染变量 {{ }}
深度查询句点符

forloop.counter

forloop.counter0(从0计数)

 

 

Template(模板层)---渲染变量 {{ }}
过滤器{{ var|filter:参数}}

自定义标签和过滤器

Model(模型层)
ORM---对象关系映射

单表记录操作

model.py

class Book(models.Model):
    title=models.CharField(max_length=32)
    price=models.DecimalField(max_digits=6,decimal_places=2)
    create_time=models.DateField()
    memo=models.CharField(max_length=32,default="")

    # book_obj.publish: 与这本书籍关联的出版社对象
    publish=models.ForeignKey(to="Publish",default=1)
    # book_obj.author.all():  与这本书关联的作者对象集合,Queryset []
    author=models.ManyToManyField("Author")

    def __str__(self):
        return self.title

 

查询相关API

<1> all():                 查询所有结果
QuerySet
book_l=models.Book.objects.all() <models-->models.py | objects-->管理器>

<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
QuerySet <符合条件的结果集> book_l=models.Book.objects.filter(price=134)

<3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, 如果符合筛选条件的对象超过一个或者没有都会抛出错误。
Object
models.Book.objects.get(title="数学书")
<5> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 QuerySet
book_l=models.Book.objects.exclude(price=134)

<4> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列
QuerySet
models.Book.objects.all().values("title","price")
<9> values_list(*field): 它与values()非常相似,它返回的是一个元组序列
QuerySet
models.Book.objects.all().values_list("title","price")
<6> order_by(*field): 对查询结果排序
QuerySet
models.Book.objects.all().order_by("price") <排序从小到大>
models.Book.objects.all().order_by("-price")  <排序从大到小>

<7> reverse(): 对查询结果反向排序
QuerySet
models.Book.objects.all().order_by("price").reverse() <排序从大到小>
<8> distinct(): 从返回结果中剔除重复纪录
QuerySet
<10> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
返回的是值
book_list.count()
<11> first(): 返回第一条记录 Object
book_obj=models.Book.objects.all().first()

<12> last(): 返回最后一条记录
Object
book_obj=models.Book.objects.filter(title="语文书").last()


<13> exists(): 如果QuerySet包含数据,就返回True,否则返回False
ANS=models.Book.objects.all().exists()

 

删除记录&更新记录

多对多关系-创建第三张表

多对多关系-自动创建第三张表,不会生成author字段

出版社信息-select表--values=“{{publish.pk}}”

添加一条新纪录--绑定书籍与作者的多对多关系

从POST中取  多关系  中的值

def addbook(request):

    if request.method=="POST":

        title=request.POST.get("title")
        price=request.POST.get("price")
        date=request.POST.get("date")
        publish_id=request.POST.get("publish_id")
# 使用getlist从POST中取多值的列表 author_id_list
=request.POST.getlist("author_id_list") print("author_id_list",author_id_list) # 绑定书籍与出版社的一对多的关系 obj=Book.objects.create(title=title,price=price,create_time=date,publish_id=publish_id) # 绑定书籍与作者的多对多的关系 # 不可行方案 # for author_id in author_id_list: # A.objects.create(book_id=obj.pk,author_id=author_id) # 可行方案 # obj.author.add(1,2,3) # obj.author.remove(1,2) # obj.author.clear() obj.author.add(*author_id_list) return redirect("/books/")

 

错误的--从POST中取  多关系  中的值

在书籍页 展示表格中的author字段

 

回顾一对多&多对多关系

 

posted on 2018-04-15 15:31  浮槎北溟  阅读(119)  评论(0编辑  收藏  举报