Models介绍:
ORM(对象关系映射)实现了对象和数据库之间的映射,隐藏了数据访问的细节,不需要编写sql语句。
编写Models:
步骤:
在应用(app)根目录下创建models.py,并引入models模块;
创建类,继承models.Model,该类即是一张数据表;
在类中创建字段。
字段创建:
字段即类里的属性(变量)
attr = models.CharField(max_length=32)
生成数据表:
myblog/myblog/settings.py中数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myblog', #选择数据库的名称,请确认你的mysql中有这个库
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost', #在通过命令行模式给dj用户授权的时候,指定的主机是localhost,改成127.0.0.1就能正常迁移数据库了。
'PORT': '3306'
}
}
注:修改配置后要创建名为myblog的数据库,不然执行“python manage.py makemigrations app名(可选)”命令时会报错。
命令行中进入manage.py同级目录;
执行python manage.py makemigrations app名(可选)
再执行python manage.py migrate
生成数据表:
Django会自动在app/migrations/目录下生成移植文件;
执行
python manage.py sqlmigrate 应用名 文件id
查看sql语句。
页面呈现数据:
后台步骤:
myblog/blog/models.py:
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=32, default="Title")
content = models.TextField(null=True)
myblog/blog/views.py:
from django.shortcuts import render
from django.http import HttpResponse
from . import models
# Create your views here.
def index(request):
#return HttpResponse("Hello world!")
#return render(request, 'index.html', {'hello': 'hello, blog!'})
article = models.Article.objects.get(pk=1)
return render(request, "index.html", {"article": article})
前台步骤:
myblog/templates/blog/index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{article.title}}</h1>
</body>
</html>