1 模版导入-->写了一个好看的组件,可以复用,
1 写一个模板
2 在模板中:{% include '模板的名字'%}
2 模板的继承
1 写一个母版,留一个可扩展的区域(盒子),可以留多个盒子(留的越多,可扩展性越高)
{%block 名字%}
可以写内容
{%endblock%}
2 在子模板中使用:
{%block 名字%}
子模板的内容
{%endblock 名字%}
3 静态文件相关
1 写死静态文件:<link rel="stylesheet" href="/static/css/mycss.css">
2 使用 static标签函数:
-{%load static%}
import os
if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day76orm.settings")
import django
django.setup()
from app01 import models
# ****************新增*********插入数据的两种方式
# 方式一 :返回结果是一个对象
# book=models.Book.objects.create(name='红楼梦',price=23.8,publish='人民出版社',author='曹雪芹',create_data='2018-09-17')
# print(book.name)
# 方式二:先实例化产生对象,然后调用save方法,保存
# book=models.Book(name='水浒传',price=99.8,publish='老男孩出版社',author='施耐庵',create_data='2018-08-08')
# book.save()
# print(book.name)
# 时间格式,可以传字符串,可以传日期格式
# import datetime
#
# ctime = datetime.datetime.now()
# book = models.Book.objects.create(name='西游记', price=73.8, publish='北京出版社', author='吴承恩', create_data=ctime)
# print(book.name)
# #删除******************
# 删除名字叫西游记的这本书
# ret=models.Book.objects.filter(name='西游记').delete()
# print(ret)
# 删除的第二种方式:
# ret = models.Book.objects.filter(name='西游记').first()
# ret.delete()
# **************修改
# ret=models.Book.objects.filter(name='西游记').update(price=20.9)
# 对象修改(没有update方法,但是可以用save来修改)
# book = models.Book.objects.filter(name='西游记').first()
# book.price=89
# book.save()
# 查询************************重点************************
# (1)all()
# ret=models.Book.objects.all()
# print(ret)
# filter()
# 查询名字叫西游记的这本书
# ret=models.Book.objects.filter(name='西游记').first()
# 不支持负数,只支持正数
# ret=models.Book.objects.filter(name='西游记')[-1]
# print(ret)
# filter内可以传多个参数,用逗号分隔,他们之间是and的关系
# ret=models.Book.objects.filter(name='西游记',price='73.8')
# # ret.query -->queryset对象打印sql
# print(ret.query)
#get() 有且只有一个结果,才能用,如果有一个,返回的是对象,不是queryset对象,通常用在,用id查询的情况
# ret=models.Book.objects.get(name='红楼梦')
# ret=models.Book.objects.get(id=1)
# print(type(ret))
# exclude()查询名字不叫西游记的书,结果也是queryset对象
'''
SELECT
`app01_book`.`id`,
`app01_book`.`name`,
`app01_book`.`price`,
`app01_book`.`publish`,
`app01_book`.`author`,
`app01_book`.`create_data`
FROM
`app01_book`
WHERE
NOT (
`app01_book`.`name` = 西游记
AND `app01_book`.`price` = 23.8
)
'''
# ret=models.Book.objects.exclude(name='西游记',price='23.8')
# print(ret)
# print(ret.query)
# order_by 按价格升序排
# ret=models.Book.objects.all().order_by('price')
# print(ret)
# queryset对象可以继续 点 方法
# ret=models.Book.objects.all().order_by('price').filter(name='西游记')
# print(ret)
# 按价格倒序排
# ret=models.Book.objects.all().order_by('-price')
# print(ret)
# 可以传多个
# ret=models.Book.objects.all().order_by('-price','create_data')
# print(ret)
# print(ret.query)
# reverse 对结果进行反向排序
# ret=models.Book.objects.all().order_by('-price').reverse()
# print(ret)
# print(ret.query)
# count 查询结果个数
# ret=models.Book.objects.all().count()
# ret=models.Book.objects.all().filter(name='西游记').count()
# print(ret)
# last 返回book对象
# ret=models.Book.objects.all().last()
# print(ret)
# exists 返回结果是布尔类型
# ret=models.Book.objects.filter(name='三国演义').exists()
# print(ret)
# values(*field): queryset对象里套字典
# ret=models.Book.objects.all().values('name','price')
# ret=models.Book.objects.all().values('name')
# print(ret)
# value_list queryset对象里套元组
# ret=models.Book.objects.all().values_list('name','price')
# print(ret)
# distinct() 必须完全一样,才能去重 只要带了id,去重就没有意义了
# ret=models.Book.objects.all().values('name').distinct()
# print(ret)
# **************基于双下划线的模糊查询
# 查询价格大于89 的书
# ret=models.Book.objects.filter(price__gt='89')
# print(ret)
# 查询价格小于89 的书
# ret=models.Book.objects.filter(price__lt='89')
# print(ret)
# ret=models.Book.objects.filter(price__lt='89',price='89')
# 小于等于
# ret=models.Book.objects.filter(price__lte='89')
# 大于等于,
# ret = models.Book.objects.filter(price__gte='89')
# print(ret)
# in 在XX中
# ret=models.Book.objects.filter(price__in=['23.8','89','100'])
# print(ret)
# print(ret.query)
# range 在XX范围内 between and
# ret=models.Book.objects.filter(price__range=[50,100])
# print(ret.query)
# contains 查询名字有'%红%'的书
# ret=models.Book.objects.filter(name__contains='红')
# print(ret)
# print(ret.query)
# icontains 查询名字带p的书,忽略大小写
# ret=models.Book.objects.filter(name__icontains='P')
# print(ret)
# print(ret.query)
# startswith 以XX开头
# ret=models.Book.objects.filter(name__startswith='红')
# print(ret)
# print(ret.query)
# endswith
# ret=models.Book.objects.filter(name__endswith='梦')
# print(ret)
# pub_date__year 按年查询
# ret=models.Book.objects.filter(create_data__year='2017')
# print(ret)
Mysql数据库的配置
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
# key值必须都是大写
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day77',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'admin',
}
STATIC_URL = '/static/'
STATICFILES_DIRS =[
os.path.join(BASE_DIR, "static"),
]
在Django __init__这个文件里继续写下以下数据
import pymysql
pymysql.install_as_MySQLdb()