django-模型之(ORM)对象关系映射(一)
时间:2022-07-23
本文章向大家介绍django-模型之(ORM)对象关系映射(一),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
所谓对象关系映射,就是将数据库的一些名字与python中的一些名字相对应,表名-->类名,字段-->属性,操作(增删改查)-->方法。这样,我们就可以通过对Python代码的编辑来对数据库进行操作。
流程:创建models,通过models创建迁移文件(makemigrations),通过迁移文件映射到数据库中。
book/models.py
from django.db import models
# Create your models here.
class Student(models.Model):
#字段映射,数据库中是male,female,后台显示的是男,女
choices={
('male',"男"),
('female','女'),
}
#创建数据库中的字段
name=models.CharField(verbose_name='姓名',max_length=20,unique=True)
age=models.CharField(verbose_name='年龄',max_length=10)
gender=models.CharField(verbose_name='性别',max_length=10,choices=choices,default='male')
is_deleted=models.BooleanField(default=False)
introduce=models.TextField()
def __str__(self):
return self.name
class Meta:
# verbose_name_plural='新闻'
# verbose_name="新闻列表"
#修改排列的顺序,这句是靠id从大到小排序
ordering=['-id']
db_table = 'student'
book/admin.py
from django.contrib import admin
from .models import Student
# Register your models here.
#在后台显示相关信息
class StudentAdmin(admin.ModelAdmin):
list_display = ['id','name','age','gender','is_deleted','introduce']
#将模型进行注册
admin.site.register(Student,StudentAdmin)
有了这两个,输入:
python manage.py makemigrations
python manage.py migrate
会在migrations下生成一个文件:
具体内容如下:
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('book', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Student',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=20, unique=True, verbose_name='姓名')),
('age', models.CharField(max_length=10, verbose_name='年龄')),
('gender', models.CharField(choices=[('male', '男'), ('femal', '女')], max_length=10, verbose_name='性别')),
('is_deleted', models.BooleanField(default=False)),
('introduce', models.TextField()),
],
),
migrations.DeleteModel(
name='Articles',
),
]
我们要进入后台管理界面需要设置用户名和密码:
python manage.py createsuperuser
输入用户:admin 密码:12345678 邮箱可以不填
浏览器输入127.0.0.1:8000/admin,输入账号密码后进入到管理界面,
点击students,会有相应表的信息:
最后,我们将数据库里面的内容传到前台页面:
book/views.py
from .models import Student
from django.shortcuts import render
def index(request):
student_list=Student.objects.all()
context={
'students':student_list,
}
return render(request,"index.html",context=context)
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
<link rel="stylesheet" href={% static 'css/index.css' %}>
</head>
<body>
{% include 'header.html'%}
<div class="content">
<h1>这是主界面</h1>
{% for student in students %}
{{student.id}}
{{student.name}}
{% endfor %}
<!--{% block content %}-->
<!--{% endblock %}-->
</div>
{% include 'footer.html'%}
</body>
</html>
最终效果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Confluence 如何查看页面树
- 聊聊claudb的pubsub command
- Nginx证书和Tomcat证书能相互转化吗,请看这里
- 你真的理解 Webpack?请回答下列问题
- docker浅入深出3
- 绘图代码|多组学数据可视化的高端玩法
- Java单元测试——Mock技术配置
- 简单的场景分析LinearLayout 源码
- 避免栽坑之掌握Jenkins工作原理
- 如何检测JavaScript中的死循环?
- vue插槽2.6.0+
- 聊聊claudb的transaction command
- Lombok 的作者,成功讨伐 IntelliJ IDEA!
- springboot2之优雅处理返回值
- 通过NVM管理Node.js多版本