类 -》 表
对象 ——》 记录
对象的属性 ——》 记录的数据字段
年月日构成的日期对象
year
,month
, andday
.
创建日期对象
today = datetime.date.today()
d = datetime.date(1992,8,15)
strftime
today.strftime('%Y-%m-%d %H:%M:%S')
时分秒构成具体时间
hour
,minute
,second
,microsecond
, andtzinfo
.
创建时间对象
t = datetime.time(9, 50, 20)
strftime
t.strftime('%Y-%m-%d %H:%M:%S')
日期和时间
year
,month
,day
,hour
,minute
,second
,microsecond
, andtzinfo
.
创建日期时间对象
dt = datetime.datetime.today()
d2 = datetime.datetime(2018, 10, 1, 8, 12, 34, 2000)
strftime
dt.strftime('%Y-%m-%d %H:%M:%S')
一对应的模型类对象.多对应的模型类名小写_set ()
例:
b = BookInfo.objects.get(id=1)
b.heroinfo_set.all()
多对应的模型类对象.多对应的模型类中的关系类属性名 例:
#获取多对一的关联对象
h = HeroInfo.objects.get(id=1)
h.hbook
#获取多对一的关联id
h = HeroInfo.objects.get(id=1)
h.hbook_id
多模型类.objects.filter(外键属性名称__字段=value)
一模型类.objects.filter(多模型类名小写__字段=value)
定义关联属性的时候可以在约束条件定义
related_name = '关联名称'
在项目管理目录中的settings.py中设置TEMPLATES配置项的DIRS值:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 此处修改
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
在项目根目录中创建templates目录用来保存所有模板
在templates目录中为应用创建各自的模板目录,比如:
templates/users
# 保存用户应用的模板
templates/goods
# 保存商品应用的模板
templates/orders
# 保存订单应用的模板
- 获取模板对象
- template.render(context)渲染模板
from django.http import HttpResponse
from django.template import loader
def index(request):
# 1.获取模板
template=loader.get_template('index.html')
context={'city': '北京'}
# 2.渲染模板
return HttpResponse(template.render(context))
render(request对象, 模板文件路径, 模板数据字典)
from django.shortcuts import render
def index(request):
context={'city': '北京'}
return render(request,'index.html',context)
{{变量}}
语法
变量|过滤器:参数
1)单行注释语法如下:
{#...#}
2)多行注释使用comment标签,语法如下:
{% comment %}
...
{% endcomment %}
父模板
{% block 名称 %}
预留区域,可以编写默认内容,也可以没有默认内容
{% endblock 名称 %}
子模板
标签extends:继承,写在子模板文件的第一行。
{% block 名称 %}
预留区域,可以编写默认内容,也可以没有默认内容
{% endblock 名称 %}
接口就是封装了一个特定的功能,但是我们不需要知道内部是怎么实现的
接口四要素:
编写接口文档