当前位置:   article > 正文

【python常用框架--Django】django连接mysql数据库及存取数据_django存储数据到数据库

django存储数据到数据库

启动服务:python manage.py runserver

在这里插入图片描述
app01 :应用名
dj:项目同名文件夹
static:存放静态文件
temphtml:存放html文件

连接数据库

在settings.py文件中找到 DATABASES,设置数据库连接
在这里插入图片描述
在models.py中设置数据库,建立一个类,设置变量

	class mod(models.Model):
		id = models.AutoField(primary_key=True)
		user= models.CharField(max_length=255)
		password= models.IntegerField() 
		
		# 数据输出样式
		def __str__(self):
		 	return f"['id': {self.id}, 'user': {self.user}, 'password': {self.password}]"
		 
		 class Meta:
		 	db_table = 'us_pass'  
		 	# 指定数据表名,可以是需要新建表的表名
		 	# 也可以是数据库中已存在的表
		 	# 但变量名需要和数据库中保持一致。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果是需要新建表,则在终端先后运行:

	python manage.py makemigrations app_name
	python manage.py migrate
  • 1
  • 2

在这里插入图片描述
在这里插入图片描述
即可在指定数据库中生成指定表结构,也会生成很多其他的表,不用理会。如果库中已存在同名表,则不会新建。

向数据库存储数据

在views.py文件中导入相关类:
from app01.models import mod
这里显示表单的网页是首页,由home函数管理,输入数据后,带着参数跳转到index页面,由index函数管理,因此想要得到数据,需要在index函数中获取。

def home(request):
    return render(request, 'home.html')
    
def index(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        password = request.POST.get('password')
        # 获取网页中的数据
        print(name, password)
        # 映射存储
        datas = mod()
        datas.user = name
        datas.password = password
        datas.save()
    return render(request, 'demo01.html')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

home.html表单部分代码:

<form action="/index/" method="post">
<!--从home页post跳转到index页-->
    {% csrf_token %}
    name:<input type="text" name="name"/><br/>
    password:<input type="password" name="password"/><br/>
    <input type="submit" value="提交"/>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在网页中输入需要存储的数据
在这里插入图片描述
打印结果
在这里插入图片描述
数据库存储结果
在这里插入图片描述

从数据库中读取数据

同样是在views.py中导入需要的类
from app01.models import mod

def json_html(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        datas = mod.objects.filter(user=name)
        # datas = mod.objects.all()
        # datas = mod.objects.get(id = '1')
        print(datas)
        for da in datas:
        	# 获取某一字段
        	passwords = da.password
    return HttpResponse(datas)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

.objects.filter().objects.get()可添加条件。

但是get的条件必须满足在表中唯一,不然会出现get() returned more than one mod -- it returned 2! 的提醒,因为get只能返回一条数据。
filter可返回多条数据,属于QuerySet对象。
all 返回的是表中的所有数据,也属于QuerySet对象。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/449905
推荐阅读
相关标签
  

闽ICP备14008679号