Python Django 数据库的相关操作详解

yizhihongxing

下面是有关Python Django数据库相关操作的详细攻略。

1. Django操作数据库的基本步骤

Django中使用ORM(Object-Relational Mapping)方式来操作数据库。操作步骤如下:

1.1 创建模型类

在Django中,操作数据库的首要任务是定义模型类。通过模型类,Django就能自动生成相应的数据库表。下面是一个简单的User模型类的例子:

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()
    email = models.EmailField()

上述代码定义了一个名为User的模型类,它有三个字段:name、age和email。其中,name和email为字符串类型,其最大长度分别为50和254,age为整数类型。

1.2 进行数据库迁移

在定义好模型类之后,需要进行数据库迁移。这时需要在终端中切换到包含manage.py的目录,然后运行以下命令:

python manage.py makemigrations
python manage.py migrate

这两个命令用于将模型对应的数据表创建或更新到数据库。迁移生成的文件为migrations目录下的文件。

1.3 操作数据表

在进行数据库操作之前,需要创建Django中的models Manager对象。这些对象代表着与数据库表的交互。下面是一个简单的管理器的实现:

class UserManager(models.Manager):
    def create_user(self, name, age, email):
        user = self.create(name=name, age=age, email=email)
        return user

该Manager对象实现了按参数创建用户的方法create_user。需要注意的是,在操作数据表时,必须先调用模型类的objects属性,来获取与数据表交互的Manager对象。示例代码如下:

# 获取User模型类对应的Manager对象
user_manager = User.objects

# 创建一个用户
user = user_manager.create_user(name='Alice', age=25, email='alice@example.com')

# 查询用户
users = user_manager.all()

2. Django操作数据库的具体实例

下面是两个Django操作数据库的示例。

2.1 示例1:查询用户列表

编写视图函数,先获取所有用户的数据,然后传递给模板:

from django.shortcuts import render
from .models import User

def user_list(request):
    users = User.objects.all()
    context = {'users':users}
    return render(request, 'user_list.html', context)

上述代码首先导入模型User,然后获取所有的用户列表,并将其传递给user_list.html模板。模板代码如下:

{% extends 'base.html' %}

{% block content %}
    <h2>List of users</h2>
    <ul>
    {% for user in users %}
        <li>{{ user.name }}, {{ user.age }}, {{ user.email }}</li>
    {% empty %}
        <li>No users found</li>
    {% endfor %}
    </ul>
{% endblock %}

该模板将遍历users中的所有用户,并将它们的nameageemail信息显示在一个<li>标签中。

2.2 示例2:创建用户

编写视图函数,先获取用户输入的数据,然后将其保存到数据库:

from django.shortcuts import render, redirect
from .models import User

def add_user(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        age = request.POST.get('age')
        email = request.POST.get('email')
        user = User.objects.create_user(name, age, email)
        return redirect('user_list')

    return render(request, 'add_user.html')

上述代码首先导入模型类User,然后判断请求方法是否为POST。如果是,表示用户已经提交了数据,那么就从request.POST中获取nameageemail三个参数,调用User.objects.create_user方法创建用户。最后跳转到用户列表页面。如果请求方法不是POST,表示用户还没有填写数据,那么就渲染add_user.html模板,显示用户输入数据的表单。add_user.html模板代码如下:

{% extends 'base.html' %}

{% block content %}
    <h2>Add new user</h2>
    <form method="post">
        {% csrf_token %}
        <label>Name:</label>
        <input type="text" name="name" required><br>
        <label>Age:</label>
        <input type="number" name="age" required><br>
        <label>Email:</label>
        <input type="email" name="email" required><br>
        <button type="submit">Submit</button>
    </form>
{% endblock %}

该模板中包含一个表单,用户需要输入nameageemail这三个参数才能提交。表单提交后,由视图函数进行处理。

以上是两个Django操作数据库的实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Django 数据库的相关操作详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 详解Python的Django框架中的模版继承

    下面我将详细讲解 Python 的 Django 框架中的模版继承。 什么是 Django 模版继承? 在 Django 中,模版继承是一种重用模版代码的方法。它允许我们在不重复编写相同代码的情况下定义基本模板(通常是布局),并在子模板中继承这些基本模板。这使得模板更具可重用性和可维护性。 Django 模版继承的基本结构 一般来说,Django 模版继承具…

    Django 2023年5月16日
    00
  • Django框架(十八)—— auth框架:用户登录、注册、认证

    一、什么是author模块 Auth模块是Django自带的用户认证模块,可以实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。默认使用 auth_user 表来存储用户数据。 二、auth模块的使用 1、创建超级用户(create_superuser()) 创建超级用户就是在auth_user表中插入数据,密码是加密的,因此不能手动在数据库中插入…

    Django 2023年4月10日
    00
  • Django中的Model操作表的实现

    下面是 Django 中 Model 操作表的实现的攻略: 1. 创建 Model 首先,需要创建一个 Model 类。在 Django 中,每个 Model 类都需要继承自 django.db.models.Model。下面是一个简单的示例: from django.db import models class Book(models.Model): ti…

    Django 2023年5月15日
    00
  • 第八篇Django分页

    1.复杂版 data = [] for i in range(1, 302): tmp = {“id”: i, “name”: “alex-{}”.format(i)} data.append(tmp) print(data) def user_list(request): # user_list = data[0:10] # user_list = dat…

    Django 2023年4月16日
    00
  • 用django框架开发一个B2C购物网站用户注册知识点总结2

    一:用户部分: 用户注册: 用户注册序列化器: 1 import re 2 3 from django_redis import get_redis_connection 4 from rest_framework import serializers 5 6 from users.models import User 7 8 9 class CreateU…

    Django 2023年4月16日
    00
  • Django完整增删改查系统实例代码

    “Django完整增删改查系统实例代码”是一个非常简单易懂的示例教程,通过该教程可以轻松了解基于Django的增删改查系统是如何实现的。下面详细讲解一下该教程的完整攻略和两条示例说明。 一、完整攻略 准备工作:安装Django和MySQL,创建新项目对象。 创建应用:创建一个名为“myapp”的应用,生成并修改模型代码。 进行迁移:使用Django的迁移命令…

    Django 2023年5月16日
    00
  • Python – Django – App 的概念

    App 方便我们在一个大的项目中,管理实现不同的业务功能 命令行: python manage.py startapp app名 使用 Pycharm 创建: 文件 -> 新建项目 然后要在 mysite 下的 settings.py 中进行相关的配置 两个写一个就好了 一个 app 会带有以下这些文件 apps.py 是和 app 配置相关的文件 v…

    Django 2023年4月10日
    00
  • Django中的表关系实现及操作

    表关系的实现   预备知识 ORM的正向操作和反向操作: 1.正向操作:一个模型中定义了一个外键,通过该模型对该外键操作的操作叫做正向操作。 2.反向操作:被外键所关联的模型,通过该模型对外键所在模型的操作叫做反向操作。   表关系的操作 我们通过下面的案例,来了解表关系的操作 首先我们需要几张表:学生表,学生信息表,班级表,报名表,课程表 他们的关系是:学…

    Django 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部