我的尝试_Django和MySQL的配合①

首先安装 pip install mysqlclient

1\启动MySQL服务

2.1\创建数据库(用MYSQL自带工具):toraida

2.2\Django连接数据库:

在settings.py文件中进行配置, 找到DATABASES={

}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'toraida', #数据库名字
        'USER': 'root',
        'PASSWORD': 'root123',
        'HOST': '127.0.0.1', #那台机器的ip
        'PORT': 3306,
    }
}

3\Django如何CRUD-r表:

在models.py文件中编写一个类

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

 上面在models中的python代码会被翻译为下面的SQL给送过去(下面仅仅是翻译SQL,不需要插入)

create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
)

再在最下面的终端中输入下面两行代码: (这两行代码老重要了,每次改完table都要运行一下)

python manage.py makemigrations

python manage.py migrate

(别忘了在settings里注册app)

突然感慨:库中有表, 表中有列, 列中有行, 此乃SQL也.

注意! 在修改表中列的时候, 如果想要添加, 必须要在后面括号添加默认值, 不然他也不知道要帮你填啥.

案例之用户管理(增と删)

urls:

    path('exp1show/', views.exp1),
    path('exp2add/', views.exp2),
    path('exp3del/', views.exp3),

models:

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

views:

def exp1(req):
    # 1\获取数据库中所有的用户信息
    datalist = models.UserInfo.objects.all()
    return render(req, "exp1.html", {"list": datalist})


def exp2(req):
    if (req.method == "GET"):
        return render(req, 'exp2.html')
    elif (req.method == "POST"):
        print(req.POST)
        name = req.POST.get("user")
        psw = req.POST.get("psw")
        age = req.POST.get("age")
        print(name)
        models.UserInfo.objects.create(name=name, password=psw, age=age)
        return render(req, 'exp2.html')


def exp3(req):
    dele = req.GET.get("nid")
    models.UserInfo.objects.filter(id=dele).delete()
    return redirect("/exp1show/")

exp1.html:(展示列表)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>info列表</h1>
    <table border="1">
        <thead>
            <tr>
                <th>尝试1</th>
                <th>尝试头2</th>
                <th>尝试3</th>
                <th>操作</th>
            </tr>
        </thead>
        {% for obj in list %}
        <thead>
            <tr>
                <td>{{ obj.name }}</td>
                <td>{{ obj.age }}</td>
                <td>{{ obj.password }}</td>
                <td><a href="http://127.0.0.1:8000/exp3del/?nid={{ obj.id }}">删除</a></td>
            </tr>
        </thead>
        {% endfor %}
    </table>
</body>
</html>

exp2.html:(添加用户)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>添加用户</h1>
    <form method="post" action="/exp2add/">
        {% csrf_token %}
        <input type="text" name="user" placeholder="请在此键入您的用户名">
        <input type="text" name="psw" placeholder="请在此键入您的密码">
        <input type="text" name="age" placeholder="请在此键入您的age">
        <input type="submit" value="提交">
    </form>
</body>
</html>

exp3没有html, 直接通过传递GET来实现删除用户(我目前的知识要传递POST只能用表单)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值