Django 查漏补缺(持续更新)

常用命令:

  • Django-admin startproject xxx
  • Python manage.py startapp xxx
  • Python manage.py createsuperuser
  • Python manage.py runserver
  • Pip insatll virtualenv

导出和导入pip list

  • pip freeze > requirements.txt
  • pip install -r requirements.txt

 

 

1、url传参 article/<int:article_id>

<参数转换类型:参数>

Django 查漏补缺(持续更新)

 

 

2、获取数据如果没有返回404页面

get_object_or_404(模型,条件)

Django 查漏补缺(持续更新)

 

 

3、获取主键

主键有时候可能不叫id,但是主键一定叫pk

Model.object.get( pk=1 )

 

 

4、url别名

未使用:

Django 查漏补缺(持续更新)

使用别名:

{%  url  ‘别名’  id  %}

Django 查漏补缺(持续更新)

 

5、admin注册模型

Django 查漏补缺(持续更新)

 

6、Django使用MySQL修改__init__

Django 查漏补缺(持续更新)

 

 

7、admin修改

通过继承admin.ModeAdmin类对样式进行修改。

Django 查漏补缺(持续更新)

注册可以使用装饰器

Django 查漏补缺(持续更新)

 

8、已存在内容数据库增加新字段

需要设置默认值

(时间字段)

Auto_now_add:添加内容时间

Auto_now:最后修改时间

Django 查漏补缺(持续更新)

(外链字段)

添加作者字段,使用django内置user表

默认值default设置为第一个admin用户

On_delete = model.DO_NOTING:删除文章时不对外键进行操作

Django 查漏补缺(持续更新)

(布尔字段和数字字段)

Django 查漏补缺(持续更新)

 

9、时间区域修改

settings.py中

TIME_ZONE = 'UTC'  改为:

TIME_ZONE = 'Asia/Shanghai'  

 

10、过滤器

Django 查漏补缺(持续更新)

Django 查漏补缺(持续更新)

{{ blogs|length }} :显示长度

{{ content|truncatechars:30 }}  #所有内容只显示30个字符==overflow

{{ blog.time|date:’Y-m-d G:n:s’ }}  #时间格式化,G/H:24小时 h:12小时

{# xxxxxxxx #} #注释



{{ for blog in blogs }}

{{ empty }}

    Xxxxxx    #如果for循环为空,显示此内容

{{ endfor }}

 

 

11、一对多,多对多查询

Django 查漏补缺(持续更新)

 

12、通过get请求方式传递参数

比如商品详情页

  • 通过正则

<a href=’/goods/list/{{ goods.id }}’><a> ==> re_path(’/goods/list/(\d+)’,goodlist)

  • 通过标签:

<a href=’/goods/list/{{ goods.id }}’><a> ==> path(’/goods/list/<int:page>’,goodlist)

  • 通过get请求:

<a href=’?page={{ goods.id }}’><a> ==> path(’/goods/list/’,goodlist) ==> page=request.GET.get(‘page’)

 

13、分页

From django.core.paginator import Paginator

详细参数:

import os
from django.core.paginator import Paginator


objects = ['john','paul','george','ringo','lucy','meiry','checy','wind','flow','rain']<br>


p = Paginator(objects,3)  # 3条数据为一页,实例化分页对象
print p.count  # 10 对象总共10个元素
print p.num_pages  # 4 对象可分4页
print p.page_range  # xrange(1, 5) 对象页的可迭代范围

page1 = p.page(1)  # 取对象的第一分页对象
print page1.object_list  # 第一分页对象的元素列表['john', 'paul', 'george']
print page1.number  # 第一分页对象的当前页值 1

page2 = p.page(2)  # 取对象的第二分页对象
print page2.object_list  # 第二分页对象的元素列表 ['ringo', 'lucy', 'meiry']
print page2.number  # 第二分页对象的当前页码值 2

print page1.has_previous()  # 第一分页对象是否有前一页 False
print page1.has_other_pages()  # 第一分页对象是否有其它页 True

print page2.has_previous()  # 第二分页对象是否有前一页 True
print page2.has_next()  # 第二分页对象是否有下一页 True
print page2.next_page_number()  # 第二分页对象下一页码的值 3
print page2.previous_page_number()  # 第二分页对象的上一页码值 1
print page2.start_index()  # 第二分页对象的元素开始索引 4
print page2.end_index()  # 第2分页对象的元素结束索引 6

使用:视图函数

Django 查漏补缺(持续更新)

前端页面:

取东西通过customer来获取

Django 查漏补缺(持续更新)

分页代码:

Django 查漏补缺(持续更新)

 分页最多显示5页,默认显示第一页和最后一页,分页的页码可以写在setting中。

Django 查漏补缺(持续更新)

前端页面修改页码循环为page_range:

Django 查漏补缺(持续更新)

效果:

Django 查漏补缺(持续更新)

14、上一篇下一篇

视图:

Django 查漏补缺(持续更新)

前端:

Django 查漏补缺(持续更新)

效果:

Django 查漏补缺(持续更新)

15、排除exclude

除了主键等于3的其他项

Django 查漏补缺(持续更新)