Django ORM框架

2016/05/06 Django 阅读次数:

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)

Search

    Table of Contents