栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

自我学习:Django 创建数据库

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自我学习:Django 创建数据库

来源视频p42-48

1.操作表

要求install pymysql mysqlclient
1.连接设置:settings.py中

前提:数据库已启动,已建database

注释掉其他的DATABASES
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'db_test',  #数据库名
        'USER': 'root',
        'PASSWORD': 'yzy448637',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        }
    }

2.Django操作
2.1在models.py创建类

from django.db import models

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

"""
相当于
 create app01_userinfo(
                id int auto_increment primary,
                name varchar(32),
                pwd  varchar(64),
                pwd  int,
 )
"""
2.2创建数据表table
	在终端输入
python manage.py makemigrations
python manage.py migrate
	前提:1.app需已注册(settings.py中新增INSTALLED_APPS,一般在上一章已经做好)
			  2.命令行操作地址为所在目录
	进一步验证注册是否成功,可在cmd中查看

新建表(写入类)时或删除表(删除掉类或注释掉类),终端重复输入
已有表内删除某一表头(即删除列),注释掉单独行即可。同样终端输入
已有表内新增某一表头(即新增列),给一个默认值(如:age = models.IntegerField(default=18)),否则终端输入后会“报错”。

2.操作表中数据

新建数据、获取数据、删除数据、更新数据(删除、更新基于获取)

	#########新增表内容############
	#有默认值或允许空的值,可以不添加
    #UserInfo.objects.create(name="yingzongyuan", pwd="123456", age=18)


	 #########获取###########
	#获取的精华就是筛选
    #获取全部
    #data_list = UserInfo.objects.all()
    #类似于列表内嵌套字典  queryset
    #for obj in data_list:
    #   print(obj.id, obj.name, obj.pwd, obj.age)
   

    ########删除表内容############
     #获取+delete()
    #条件筛选后删除
    #UserInfo.objects.filter(id=2).delete()
    #全部删除
    #UserInfo.objects.all().delete()

    ########更新#######
    #获取+update()

案例1:在网页里显示用户信息(源自数据库数据)

1.url新建连接

 path('info/user', views.user_info),

2.views新建函数

def user_info(request):
    #获取数据库中所有用户信息
    data_list = UserInfo.objects.all()
    return render(request, "user_info.html", {"data_list": data_list})

3.新建user_info.html


用户列表

{% for obj in data_list %} {% endfor %}
ID 姓名 密码 年龄
{{ obj.id }} {{ obj.name }} {{ obj.pwd }} {{ obj.age }}
案例2:用户注册。

根据用户名判断是否注册:已注册则重新跳转并提醒已注册,未注册则跳出注册成功,且写入数据库

1.url新建连接

  #用户注册
    path('register/', views.register)

2.views新建函数

def register(request):
    #用户注册
    #UserInfo.objects.create(name="liguixi", pwd="123456", age=18)
    if request.method == "GET":  #判断请求类型
        return render(request, "register.html")
    name = request.POST.get("name")
    pwd = request.POST.get("pwd")
    age = int(request.POST.get("age"))
    if name in [obj.name for obj in UserInfo.objects.all()]:  #判断name是否在数据库中存在
        return render(request, "register.html", {"error_msg": "用户已注册"})
    UserInfo.objects.create(name=name, pwd=pwd, age=age)
    return redirect('/info/user')  #跳转至网站下链接

3.新建register.html


用户注册

{% csrf_token%} #form必带 {{ error_msg }} #
案例3 :删除用户信息

参考视频P48后半段
基于案例1,以get请求带参数(delete/?name=“我是参数”)传回数据库操作

1.url新建连接

 #用户删除
    path('delete/', views.delete),

2.views新建函数

def delete(request):
    #删除用户
    name = request.GET.get("name")  #取到name值
    UserInfo.objects.filter(name=name).delete()  
    return redirect('/info/user')  #重定位至用户信息页面

3.基于案例1 user_info.html:改动如框选

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号