djiango orm简单实现增删改查

目录

    • 一、配置数据库
      • 1.1 在settings.py文件中找到DATABASES ,配置数据库连接,这里用的是mysql
    • 二、切换操作数据库的模块
    • 三、 创建一个app并注册
      • 3.1创建一个app
      • 3.2 注册app
    • 三、在app1定义模型类
    • 四、迁移数据库,使用以下命令,生成表
    • 五、告知系统,app1中有个映射文件
    • 增删改查

一、配置数据库

1.1 在settings.py文件中找到DATABASES ,配置数据库连接,这里用的是mysql

djiango orm简单实现增删改查_第1张图片

'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'root',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '123456'
    }

ps: 注意:mysql的版本必须到8,不到8的请升级,不然后面会报版本不兼容

二、切换操作数据库的模块

在settings.py对应__init__.py文件中添加以下代码,使之使用mysql方式映射(多个app的话,只需在一个里面添加就行)

import pymysql
pymysql.version_info=(1,4,3,"final",0) # 指定了pymysql的版本:1.4.3,按照你版本修改
pymysql.install_as_MySQLdb()

djiango orm简单实现增删改查_第2张图片

三、 创建一个app并注册

3.1创建一个app

python manage.py startapp app1

djiango orm简单实现增删改查_第3张图片

3.2 注册app

在settings.py的INSTALLED_APPS进行注册
djiango orm简单实现增删改查_第4张图片

三、在app1定义模型类

在app1的models.py添加以下代码:

from django.db import models


class User(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField(30)
    job = models.CharField(max_length=30)


class Tweet(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    message = models.TextField()

四、迁移数据库,使用以下命令,生成表

表不需要去数据库创建,使用下面命令后会自动创建

python manage.py migrate

djiango orm简单实现增删改查_第5张图片
djiango orm简单实现增删改查_第6张图片

五、告知系统,app1中有个映射文件

python manage.py makemigrations app1

在这里插入图片描述
再次运行migrate来更新:

python manage.py migrate

djiango orm简单实现增删改查_第7张图片
djiango orm简单实现增删改查_第8张图片

增删改查

from django.shortcuts import render, redirect

# Create your views here.
from django.shortcuts import render,HttpResponse   ###导入HttpResponse
from app1.models import User

# 查
def query_user(request):
    user = User.objects.all()
    for i in user:
        print(i.id)
        print(user)
    context = {
    'users': user
}
    # 根据app的注册顺序,在每个app的templates目录下找
    return render(request, "user.html",context)
# 增
def save(request):
    id = request.POST.get("id")
    name = request.POST.get("name")
    age = request.POST.get("age")
    job = request.POST.get("job")

    if(id != 'None' ):
        User.objects.filter(id=id).update(name=name,age=age,job=job)
    else:

        User(name=name,age=age,job=job).save()

    return redirect('../query_user')


# 删

def delete(request):
     User.objects.get(pk=request.GET.get("id")).delete()
     return redirect('../query_user')

# 查单个
def info(request):
    id =  request.GET.get("id");
    if(id != None):
         context = {
              'user': User.objects.filter(id=request.GET.get('id'))[0]
         }
         return render(request,"info.html",context)
    else:
         return render(request,"info.html")

html代码之 info:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div style="margin: 0 auto">
<form action="../save/"  method="post">
    {% csrf_token %}
    <input type="hidden" name="id" value="{{ user.id }}">
    姓名:<input type="text" name="name" value="{{ user.name }}"><br>
    年龄:<input type="text" name="age" value="{{ user.age }}"><br>
    职业:<input type="text" name="job" value="{{user.job }}"><br>
    <input type="submit">
</form>
</div>
</body>
</html>

html代码之list:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<button>
    <a href="http://localhost:8000/app1/info">新增</a>
</button>
<table>
    <thead>
    <th>序号</th>
    <th>姓名</th>
    <th>年龄</th>
    <th>职业</th>
    <th>操作</th>

    </thead>
    <tbody>
    {% for user in users %}
       <tr>
            <td>{{user.id}}</td>
            <td>{{user.name}}</td>
            <td>{{user.age}}</td>
            <td>{{user.job}}</td>
            <td><a href="http://localhost:8000/app1/info?id={{ user.id }}">修改</a></td>
            <td><a href="http://localhost:8000/app1/delete?id={{ user.id }}">删除</a></td>
       </tr>
    {% endfor %}

    </tbody>
</table>
</body>
</html>

你可能感兴趣的:(python,django,后端)