美文网首页
django链接数据库(继入门文章)

django链接数据库(继入门文章)

作者: 想旅游的程序员 | 来源:发表于2019-06-16 10:01 被阅读0次

    1、在根目录下配置好urls以后,需要进入创建的第一个应用,即执行

    django-admin startapp blog

    进入创建的blog文件夹内,创建一个urls文件,在文件下配置url

    例如:配置路径,分别对应views下的不同模块

    from django.conf.urls import url
    
    from . import views
    
    urlpatterns = [
    
            url(r'^$',views.index,name="index"),
    
            url(r'^login/$',views.login,name="login"),
    
            url(r'^register/$',views.registser,name="register"),
    
    ]
    

    2、在views下对功能进行实现

    from django.http import HttpResponse
    
    def index(request):
    
        print("这里是什么?",request)
    
        return HttpResponse("""<h1>博客首页面</h1><a href="/"></a>""")
    

    连接MySQL数据库

    1、首先在setting文件中进行数据库的配置

    # 需要导入pymysql库
    
    import pymysql
    
    # 因为django底层使用的是mysqldb模块,需要将pymysql转为mysqldb
    
    pymysql.install_as_MySQLdb()
    
    DATABASES = {
    
        'default': {
    
            # 'ENGINE': 'django.db.backends.sqlite3',
    
            # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    
            'ENGINE':'django.db.backends.mysql',
    
            'NAME':'python_django',
    
            'USER':'root',
    
            'PASSWORD':'root',
    
            'HOST':'localhost',
    
            'PORT':3306,
    
            'CHARSET':'utf8',
    
            }
    
    }
    

    2、在models模块建立数据模型

    # 导入库
    
    from django.db import models
    
    class Users(models.Model):
    
            id = models.AutoField(primary_key=True)
    
            username = models.CharField(max_length=100,unique=True,verbose_name="用户名")
    
            age = models.IntegerField(max_length=10,default=18,verbose_name="年龄")
    
            # 昵称允许为空,null和blank都要设置
    
            nickname = models.CharField(max_length=255,null=True,blank=True,verbose_name="昵称")
    
            password = models.CharField(max_length=255,verbose_name="密码")
    
            gender = models.BooleanField(default=True,verbose_name="用户性别")
    
            email = models.EmailField(verbose_name="邮箱")
    
            # createtime = models.DateTimeField(default=datetime.now(),verbose_name="创建时间")
    
            # auto_now表示生成的时间,之后不会再改变,auto_now_add指的是每次更新的时间,会自动变化的
    
            createtime = models.DateTimeField(auto_now=True)
    

    3、在根目录的终端下执行代码,生成一个迁移文件,即生成sql语句

    python manage.py makemigrations
    

    (可选操作)可以对生成的sql语句进行查看

    python manage.py sqlmigrate
    

    4、对生成的sql语句进行执行

    python manage.py migrate
    

    5、将数据保存在数据库,三种方法

    方法一(不推荐):在上面Users对象下创建一个函数来实现用户数据的添加,类方法,继承了Model对象

    # 使用类方法实现数据增加
    
    @classmethod
    
    def add_user(cls,username,password,age,nickname,email):
    
            cls(username=username,password=password,age=age,nickname=nickname,email=email)
    
    在views模块执行
    
    # 导入models模块
    
    from . import models
    
    def registser(request):
    
            username = "zhengyuchao1"
    
            age = 19
    
            nickname = "草草"
    
            email = "[150@qq.com](mailto:150@qq.com)"
    
            password = "123456"
    
            user = models.Users.add_user(username=username,password=password,age=age,nickname=nickname,email=email)
    
            user.save()
    
            return HttpResponse("注册成功")
    

    方法二:创建一个Manager管理对象,来操作数据的添加

    创建一个UserManager对象

    必须继承manager类

    class UserManager(models.Manager):
    
            def add_user(self,username,password,nickname,age,email):
    
                    user = self.create(username=username,password=password,nickname=nickname,age=age,email=email)
    
                    return user
    
    在Users对象中添加一行代码关联这个对象
    
       userManager = UserManager()
    
    在views视图中操作该Manager对象,自带save方法,不用再次执行了
    
       user = models.Users.userManager.add_user(username=username,password=password,age=age,nickname=nickname,email=email)
    

    方法三:因为Model模块已经封装了数据添加存储的方法,直接在views中使用

            user = models.Users(username=username,password=password,age=age,nickname=nickname,email=email)
    
            user.save()
    ```

    相关文章

      网友评论

          本文标题:django链接数据库(继入门文章)

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