美文网首页
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