ORM框架
ORM框架是对把类和数据表做了一个映射,可以通过类和类对象就能操作对应的数据表
ORM框架还有一个功能,它可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程。
DjangoORM框架的功能:
a)建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。
b)根据设计的模型类生成数据库中的表格。
通过方便的配置就可以进行数据库的切换。
创建模型
所有的模型都需要继承与:models.Model,所有的模型类都在models.py文件中创建
一般在模型中一个类对应一个数据库的表,在创建的类中就要继承于:model.Model
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
迁移
1.生成迁移文件
python manage.py makemigrations
2.执行迁移命令
python manage.py migrate
后台管理
使用Django的管理模块,需要按照如下步骤操作:
- 1.管理界面本地化
- 2.创建管理员
- 3.注册模型类
- 4.自定义管理页面
1.打开test1/settings.py文件,找到语言编码、时区的设置项,将内容改为如下:
LANGUAGE_CODE = 'zh-hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间
2.创建管理员的命令如下,按提示输入用户名、邮箱、密码。
python manage.py createsuperuser
打开浏览器,在地址栏中输入如下地址后回车。
http://127.0.0.1:8000/admin/
3.注册模型类,打开booktest/admin.py文件,编写如下代码:
导入models中的类,在admin.py文件中注册,注册后刷新网页,就可以管理
from django.contrib import admin
from booktest.models import BookInfo,HeroInfo
admin.site.register(BookInfo)
admin.site.register(HeroInfo)
4.自定义管理页面
在列表页只显示出了BookInfo object,对象的其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能,比如列表页要显示哪些值。
打开booktest/admin.py文件,自定义类,继承自admin.ModelAdmin类。
- 属性list_display表示要显示哪些属性
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'btitle', 'bpub_date']
- 修改模型类BookInfo的注册代码如下
admin.site.register(BookInfo, BookInfoAdmin)
- 刷新BookInfo的列表页,所有属性都显示出来了
- 最终booktest/admin.py文件代码如下
from django.contrib import admin
from booktest.models import BookInfo,HeroInfo
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'btitle', 'bpub_date']
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'hname','hgender','hcomment']
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)
视图URL
对于django的设计框架MVT,用户在URL中请求的是视图,视图接收请求后进行处理,并将处理的结果返回给请求者
使用视图时需要进行两步操作:
* 1.定义视图函数
* 2.配置URLconf
1.在views.py文件中,定义视图:打开booktest/views.py文件,定义视图index如下
from django.http import HttpResponse //HttpResponse返回给浏览器
def index(request):
return HttpResponse("index")
2.配置应用中的url地址
一条URLconf包括url规则、视图两部分:
- url规则使用正则表达式定义。
- 视图就是在views.py中定义的视图函数。
需要两步完成URLconf配置:
- 1.在应用中定义URLconf
- 2.包含到项目的URLconf中
在booktest/应用下创建urls.py文件,定义代码如下:
from django.conf.urls import url
from booktest import views
urlpatterns = [
url(r'^$', views.index),
]
包含到项目中:打开项目中urls.py文件,为urlpatterns列表增加项如下:
url(r'^', include('booktest.urls')),
项目中urls.py文件完整代码:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('booktest.urls')),
]
模板
创建模板
设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值
'DIRS': [os.path.join(BASE_DIR, 'templates')],
打开templtes/booktest/index.html文件,定义模板代码如下:
<html>
<head>
<title>图书列表</title>
</head>
<body>
<h1></h1>
</body>
</html>
视图调用模板
调用模板分为三步骤:
- 1.找到模板
- 2.定义上下文
- 3.渲染模板
打开views.py文件,调用上面定义的模板文件
from django.shortcuts import render
def index(request):
context={'title':'图书列表','list':range(10)}
return render(request,'booktest/index.html',context)