美文网首页
django学习4

django学习4

作者: Retree | 来源:发表于2018-08-14 20:49 被阅读0次

数据库配置

验证已安装mysql,登录,root账号,无密码

mysql -u root

配置setting.py,找到DATABASES配置项,修改为

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

登录mysql,创建test数据库

create database test;

创建app

在HelloWorld目录下(templates同级)创建appp
TestModel是app名,可以改

django-admin startapp TestModel

修改TestModel/models.py

如下类名代表了数据库表名,且继承了models.Model
类里面的字段代表数据表中的字段(name),数据类型有CharField(相当于varchar)、DateFiled(相当于datetime),max_length(限定长度)

#models.py
from django.db import models

class Test(models.Model):
    name = models.CharField(max_length=20)

修改setting.py

找到INSTALLED_APPS这一项,在里面增加一行 'TestModel',

image.png

初始化表结果

创建表结构

python manage.py migrate  #创建表结构
python manage.py makemigrations TestModel   #让Django知道我们在我们的模型有一些变更
python manage.py migrate TestModel   #创建表结构

结果如下:


image.png

数据库操作

在HelloWorld/HelloWorld目录下创建testdb.py文件;
修改urls.py文件
如果有中文,别忘了文件改为utf-8编码。

urls.py文件修改:

from django.conf.urls import *  #修改了此行
from django.contrib import admin
from django.http import HttpResponse
from . import view,testdb #修改了此行

urlpatterns = [
    url(r'^$',view.hello),
    url(r'^testdb$',testdb.testdb),  #新增此行
    
]

testdb.py内容:

# -*- coding: utf-8 -*-
 
from django.http import HttpResponse
 
from TestModel.models import Test
 
# 数据库操作
def testdb(request):
    test1 = Test(name='runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")

访问http://127.0.0.1:8000/testdb 就可以看到数据添加成功的提示

image.png

查询数据库

use test;
select * from testmodel_test;

结果如下:


image.png

获取数据

注释掉上面添加数据的代码

#-*- coding:utf-8 -*-

from django.http import HttpResponse
from TestModel.models import Test

#数据库操作
'''
#新增数据
def testdb(request):
    test1 = Test(name = 'runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")
'''
#获取数据
def testdb(request):
    #初始化
    response = ""
    response1 = ""
    
    #通过objects这个模型管理器的all()获得所有数据行,相当于sql中的select * from
    list = Test.objects.all()
    
    #filter相当于sql中的where,可以设置条件过滤结果
    response2 = Test.objects.filter(id=1)
    
    #获取耽搁对象
    response3 = Test.objects.get(id=1)
    
    #限制返回的数据 相当于sql中的 limit
    Test.objects.order_by('name')[0:2]
    
    #数据排序
    Test.objects.order_by("id")
    
    #上面的方法可以连锁使用
    Test.objects.filter(name='runoob').order_by("id")
    
    #输出所有数据
    for var in list:
        response1 += var.name + " "
    response = response1
    return HttpResponse("<p>" + response + "</p>")

更新数据

#-*- coding:utf-8 -*-

from django.http import HttpResponse
from TestModel.models import Test

#数据库操作
'''
#新增数据
def testdb(request):
    test1 = Test(name = 'runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")

#获取数据
def testdb(request):
    #初始化
    response = ""
    response1 = ""
    
    #通过objects这个模型管理器的all()获得所有数据行,相当于sql中的select * from
    list = Test.objects.all()
    
    #filter相当于sql中的where,可以设置条件过滤结果
    response2 = Test.objects.filter(id=1)
    
    #获取耽搁对象
    response3 = Test.objects.get(id=1)
    
    #限制返回的数据 相当于sql中的 limit
    Test.objects.order_by('name')[0:2]
    
    #数据排序
    Test.objects.order_by("id")
    
    #上面的方法可以连锁使用
    Test.objects.filter(name='runoob').order_by("id")
    
    #输出所有数据
    for var in list:
        response1 += var.name + " "
    response = response1
    return HttpResponse("<p>" + response + "</p>")
'''

###更新数据
def testdb(request):
    #修改其中一个id=1的name字段,在save,相当于sql中的update
    test1 = Test.objects.get(id=1)
    test1.name = 'Google'
    test1.save()
    
    #修改的另一种方式
    #Test.objects.filter(id=1).update(name='Google')
    
    #修改所有列
    #Test.objects.all().update(name='Google')
    
    return HttpResponse("<p>修改成功</p>")

删除数据

如果数据库没有,会报错

#-*- coding:utf-8 -*-

from django.http import HttpResponse
from TestModel.models import Test

#数据库操作
'''
#新增数据
def testdb(request):
    test1 = Test(name = 'runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")

#获取数据
def testdb(request):
    #初始化
    response = ""
    response1 = ""
    
    #通过objects这个模型管理器的all()获得所有数据行,相当于sql中的select * from
    list = Test.objects.all()
    
    #filter相当于sql中的where,可以设置条件过滤结果
    response2 = Test.objects.filter(id=1)
    
    #获取耽搁对象
    response3 = Test.objects.get(id=1)
    
    #限制返回的数据 相当于sql中的 limit
    Test.objects.order_by('name')[0:2]
    
    #数据排序
    Test.objects.order_by("id")
    
    #上面的方法可以连锁使用
    Test.objects.filter(name='runoob').order_by("id")
    
    #输出所有数据
    for var in list:
        response1 += var.name + " "
    response = response1
    return HttpResponse("<p>" + response + "</p>")


#更新数据
def testdb(request):
    #修改其中一个id=1的name字段,在save,相当于sql中的update
    test1 = Test.objects.get(id=1)
    test1.name = 'Google'
    test1.save()
    
    #修改的另一种方式
    #Test.objects.filter(id=1).update(name='Google')
    
    #修改所有列
    #Test.objects.all().update(name='Google')
    
    return HttpResponse("<p>修改成功</p>")
    
'''

#删除数据
def testdb(request):
    #删除id=1的数据
    test1 = Test.objects.get(id =1)
    test1.delete()
    
    #另一种方式
    #Test.objects.filter(id=1).delete()
    
    #删除所有
    #Test.objects.all().delete()
    
    return HttpResponse("<p>删除成功</p>")

相关文章

网友评论

      本文标题:django学习4

      本文链接:https://www.haomeiwen.com/subject/sdqbbftx.html