一、简介
Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django自带了一个轻量级的数据库引擎 ——SQLite。SQLite是一个服务器端的数据库,它不需要单独的服务器进程,数据库就是服务器。这使得它非常适合于小型项目或原型开发。当然,
Django还支持PostgreSQL,MySQL,Oracle,SQLite和MariaDB这几种数据库。作为初学者,我们本章学习SQLite的基本使用,在后续文章中会学习与MySql,Oracle,PostgreSql等数据库的交互。
二、为什么使用SQLite
SQLite是Django 自带的一个轻量级的数据库引擎。SQLite 是一个服务器端的数据库,它不需要单独的服务器进程,数据库就是服务器。这使得它非常适合于小型项目或原型开发,且创建项目的时候已经同步添加了sqlite数据库文件,我们可以直接使用。
- 简单性:SQLite 是一个无需配置的数据库,它存储在一个单独的磁盘文件中。
- 轻量级:对于小型项目或个人项目来说,SQLite 是一个轻量级的选择。
- 内置支持:Django 默认支持 SQLite,无需额外安装数据库服务器。
三、使用步骤
1.配置数据库连接
在settings.py文件中找到DATABASES配置。默认情况,Django 已经为 SQLite 设置好了:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
ENGINE: 指定了数据库引擎
NAME: 指定了数据库文件的路径。BASE_DIR / 'db.sqlite3' 表示数据库文件将存储在项目根目录下。
2.创建模型
在 Django 中,模型是数据库表的映射。让我们创建一个简单的模型来演示。
在应用层(通过python manage.py startapp myapp命令创建)app的models.py中定义一个模型。
from django.db import models
# Create your models here.
class Student(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
description = models.TextField()
3.迁移数据库
在创建或修改模型后,你需要应用迁移来更新数据库结构。
1.运行以下命令来创建迁移文件:
python manage.py makemigrations
2.应用迁移到数据库:
python manage.py migrate
4.使用模型
可以使用 Django 的 ORM 来操作数据库。在这里我们演示新增与查询。
1.打开 app/views.py 文件,并添加接口insertAndGetStudent
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from .models import Student
@csrf_exempt
def insertAndGetStudent(request):
if request.method == 'POST':
name = request.POST.get("name")
age = request.POST.get("age")
try:
age = int(age) # 将年龄转换为整数
except ValueError:
return HttpResponse("Invalid age. Please enter a valid integer for age.")
description = request.POST.get("description")
student = Student(name=name, age=age, description=description)
student.save()
students = Student.objects.all()
return render(request, 'student.html', {'data': students})
else:
students = Student.objects.all()
return render(request, 'student.html', {'data': students})
2.打开app/urls.py文件,添加url
path('student/', views.insertAndGetStudent),
3.在templates中添加student页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Student</title>
</head>
<body>
<form action="/student/" method="post"></br>
<!-- 用于防止跨站请求伪造的。确保在表单中包含这个令牌-->
{% csrf_token %}
学生姓名: <input type="text" name="name">
年龄:<input type="text" name="age">
描述:<input type="text" name="description"></textarea>
<input type="submit" value="提交">
<hr >
<h2>学生列表</h2>
<table style="border: 1px">
<tr>
<th>学生姓名</th>
<th>年龄</th>
<th>描述</th>
</tr>
{% for item in data %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
<td>{{ item.description }}</td>
</tr>
{% endfor %}
</table>
</form>
</body>
</html>
4.运行项目
python .\manage.py runserver