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

下面是有关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日

相关文章

  • Django Rest framework 框架

    一、开发模式:     1. 普通开发方式(前后端放在一起写)   2. 前后端分离(前后台通过ajaxo交互)     后端(django rest framework写的) <—-ajaxo—>  前端(vue写的) <—– >  用户     好处:   二、后端开发     为前端提供url(API的开发或者接口…

    Django 2023年4月13日
    00
  • Django之ajax(jquery)封装(包含 将 csrftoken 写入请求头方法)

    由于支持问题,未使用 es6 语法 _ajax.js /** * 发起请求 * @param url 请求地址 * @param data 请求数据 { } json格式 * @param type 请求类型 get|post * @param success 请求成功回调方法(如果支持es6,使用 Promise 更方便) * @param fail 请求…

    Django 2023年4月11日
    00
  • Django中Middleware中间件

    Django中Middleware中间件 1 Middleware中间件概述 django中间middleware实质就是一个类,django会根据自己的规则在合适的时机执行中间件相应的方法。实际上当我们想在发起请求到服务器views处理函数,我们想对请求做一些提前处理,此时中间件就上场了。 django在settings模块中,有一个MIDDLEWARE_…

    Django 2023年4月10日
    00
  • django生产环境搭建(uWSGI+django+nginx+python+MySQL)

    下面我将详细讲解“django生产环境搭建(uWSGI+django+nginx+python+MySQL)”的完整攻略,过程中我会包含两条示例说明。 概述 本文将会介绍在Linux系统上搭建Django网站的完整过程,包括uWSGI和Nginx的安装和配置,以及与MySQL数据库的连接。 示例说明 为了更好地演示这个过程,我将会给出两个示例,一个使用的是P…

    Django 2023年5月16日
    00
  • Django + Axios & Ajax post和get 传参

    话说千遍淡如水,不如代码来一通。   Axios post: let params = new URLSearchParams(); params.append(‘id’,xx) axios({ url:’http://127.0.0.1:8000/userctrl/shoucang’, method:’post’, data:params, respons…

    Django 2023年4月13日
    00
  • python框架Django实战商城项目之工程搭建过程图文详解

    下面是详细讲解“Python框架Django实战商城项目之工程搭建过程图文详解”的完整攻略,包含两条示例说明。 概述 本攻略主要讲解如何使用Python框架Django实现商城网站的工程搭建过程,包括安装Django、创建项目、创建应用、配置数据库、创建模型、迁移数据库等步骤。通过这个过程,你可以了解到Django的基本框架、MVC架构、ORM和数据库等相关…

    Django 2023年5月16日
    00
  • django2笔记之路由path语法的实现

    下面是详细讲解“django2笔记之路由path语法的实现”的完整攻略: 1. 路由path语法概述 在Django中,路由用于匹配URL,并将请求分发到对应的视图函数。而路由的定义则是通过一个Python模块来完成的,这个模块通常被称作“路由表”。 在Django 2开始,我们使用path()函数定义路由而不是url()函数。和旧版本的url()函数相比,…

    Django 2023年5月16日
    00
  • Django if标签详解

    Django if标签是模板语言中的一种条件判断语句,可以在渲染模板时根据条件的真假来选择性地输出一些内容。它的基本语法是: {% if condition %} … content … {% elif other_condition %} … other content … {% else %} … fallback content .…

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