zoukankan      html  css  js  c++  java
  • Django ----- app 和 ORM的操作和介绍

    说明一下  GET 和 POST 的区别:
            1, GET 
                    ①获取一个页面
                    ②提交数据  数据显示在URL   ?user=alex&pwd=alexdsb
            2,POST
                    from 表单提交数据  数据不显示

    创建APP

     创建APP 有两种方式

     一、 命令行创建APP文件:

    python manage.py startapp app01

    执行命令后 项目目录下会多出一个app文件

     

    二、 也可以用pycharm来创建app文件

    1. Django项目创建后追加app:

      可以使用Pycharm的manage.py工具来执行命名.在主菜单中选择Tools,在下拉菜单中选择Run manage.py Task

      

     

    在弹出的命令窗口中直接输入命令就可以创建好app

    startapp app01

    2,在创建Django项目时,建立app

    在Application name 中添加上要创建的名字即可

    创建Django创建App 的大概步骤

    1,下载:
        命令行: pip install django == 1.11.15
                pip install -i或 源  django == 1.11.15
        pycharm
                settings 解释器 点 + 号  输入django 选择版本
    
    2,创建 Django项目
        1,命令行:  (可能有的东西没配置)
                cd 保存项目的目录
                django - admin startporject 项目名
        2,pycharm(可以自己都配置好)
                filr(按钮)--> new project --选择django ---->选择解释器--创建django项目
    3,启动项目
        1,命令行:
                切换到 manage.py的目录下
                cd
                python manage.py runserver  #127.0.0.1:8000
                python manage.py runserver 80 #127.0.0.1:8000
                python manage.py runserver  #0.0.0.1:8000
        2.pycharm
                配置项
                点绿色三角启动
    4,settings配置
        1,静态文件
                STATIC_URL= "/static/"    #别名 ()
                STATICFILES_DIRS = [
                        os.path.join(BASE_DIR,"static"),
    
                ]   (可以创建多个)
    
        2,TEMPLATES    模版  放HTML文件的地方
                DIRS [os....]   自动生成的
    
        3,注释 csrf中间件
            MIDDLEWARE   第四行 csrf 注释掉这一行
        4,数据库的配置
    
    5, URL 和函数的对应关系  ---> urls.py
        urlpatterns[
            url(r"^admin/",admin.site.urls),
            url(),
        ]
    
    6.APP   
        1.创建APP
            1,命令行:
                    python manage.py startapp APP名
            2,pycharm
                    tools ---> run manage.py task --> startapp APP名
    
        2.注册APP
            在settings.py中
            INSTALLED_APPS[
                加上自己的APP名(如若pycharm创建 会自动添加 若是手动添加则按规范来
                "APP名字.apps.App01Config")
    
            ]
    
    7.使用mysql数据库
        1.创建一个数据库
        2.在srttings配置:
                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql', #引擎
                        'NAME': 'db66',                     #数据库名字
                        "USER": "root",                     #账户
                        "PASSWORD": "666666",                #密码
                        "HOST": "127.0.0.1",               #IP地址
                        "PORT": 3306,                     #端口号
                    }
                }
        3.告诉Django 使用pymysql 模块连接数据库
                在settings.py 同级目录下的 __init__.py中写(下载好了 pymysql):
                        import pymysql
                        pymysql.install_as_MYSQLad()
    
        4.建表    在APP文件夹里 models.py文件中写类(继承 models.Model)
                class Userinfo(models.Model):
                    user = models.CharField(max_length=32)
                    pwd = models.CharField(max_length=32)
    
        5.执行命令 (数据库迁移命令)
            Tools  ---> Run~~
                python manage.py makemigrations    #记录models.py中类是不是有变化 将变化的内容记录下来 记录到了  APP文件下 migrations  0001_initial.py里面
                python manage.py migrate 
    
    8 .ORM
            对象和关系型数据库的映射  通过操作对象的方式来操作数据库
    
            映射关系;
                类 ---> 数据表
                对象 ---> 数据行
                属性  ---> 字段
    
            ORM 能做的事:
                操作数据表   (建表,删表,改表)
                操作数据行
    
            ORM 的操作 :
                from login import models 
                # 获取所有数据
                models.Userinfo.objects.all()     ---> Queryset类型
                # 获取一条数据
                models.Userinfo.objects.get(user="??",pwd="??")
                get取不到数据或者取到多条数据的时候报错
                #创建一条数据
                models.Userinfo.objects.creat(user="??",pwd="??")
    
    9.form表单
    
        1.method ="post"   (form表单里面 必须带有这个)  action=""  ,这是请求方式 和提交数据的地址
        2.所有的 input标签要有name属性,  name的名字要和 上面ORM 的user pwd 相同
        3.有一个input 的type="submit"  或者有一个button 按钮 就可以提交form表单
    
    10. views.py  写函数
        request  跟请求相关的内容
            request.method    字符串 请求方式 GET/POST
            request.POST      post请求提交的数据       字典
            request.GET       get请求提交的数据
    
        返回值
            from django.shortcuts import HttpResponse,render,redirect
    
            HttpResponse("字符串")    -->页面显示的就是字符串
            render(request,"模版文件的名字")  -->渲染你的HTML文件返回给浏览器
            redirect("/要跳转的URL/")     --->重定向  告诉浏览器再向浏览器发次GET请求
    大概步骤

     

    orm介绍

    一、 ORM的概念

        对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。

        简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

        ORM在业务逻辑层和数据库层之间充当了桥梁的作用。

    二、 ORM由来

        让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。

        几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。

        当对象的信息发生变化的时候,我们就需要对象的信息保存在关系数据库中。

        按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关

        数据,而这些代码通常都是极其相似或者重复的。

    三、ORM的优势和劣势

       优势:

          ORM解决的主要问题是对象和关系的映射。它通常将一个类和一张表一一对应,类

          的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。 

          ORM提供了对数据库的映射,不用直接编写SQL代码,只需操作对象就能对数据库操作数据。

          让软件开发人员专注于业务逻辑的处理,提高了开发效率。

       劣势:      

          ORM的缺点是会在一定程度上牺牲程序的执行效率。

          ORM的操作是有限的,也就是ORM定义好的操作是可以完成的,一些复杂的查询操作是完成不了。

          ORM用多了SQL语句就不会写了,关系数据库相关技能退化...

    四、 ORM的总结:    

          ORM只是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。

          但我们不能指望某个工具能一劳永逸地解决所有问题,一些特殊问题还是需要特殊处理的。

          但是在整个软件开发过程中需要特殊处理的情况应该都是很少的,否则所谓的工具也就失去了它存在的意义

    orm的操作

    创建项目!!!!

      

    Django 中默认的数据库是用的db.sqlite3 (ACID的关系型数据库管理系统,它包含在一个相对小的C库中);

    更改这个默认的数据库为指定的MySQL数据就需要重新配置主文件夹中的settings.py 配置文件:

    Django项目中使用Mysql数据库

      1,在Django项目中的srttings.py文件中,配置数据库连接信息:

      

    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "你的数据库名称",  # 需要自己手动创建数据库
            "USER": "数据库用户名",
            "PASSWORD": "数据库密码",
            "HOST": "数据库IP",
            "POST": 3306
        }
    }
    

      2.在与Django项目同名的目录下的 __init__.py文件中写如下代码,告诉Django使用pymysql模块连接Mysql数据库:

    引入pymysql文件时 要确定 已经下载了pymysql这个包  ( pip install pymysql   (终端执行))
    
    import pymysql
    
    pymusql.install_as_MYSQLdb()
    

      注意! 数据库迁移的时候出现一个警告:

      

    WARNINGS: 
    ?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
    HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it.

      在配置中多加一个OPTIONS参数 : 

     'OPTIONS': {
        'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},

                model

    在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表。

    基本情况:

    • 每个模型都是一个Python类,它是django.db.models.Model的子类。
    • 模型的每个属性都代表一个数据库字段。
    • 综上所述,Django为您提供了一个自动生成的数据库访问API,详询官方文档链接

    1,创建数据库的表:

      

    # 1, 在APP文件夹中找到 models.py文件夹;  
    # 2, 导入该模块
    from django.db import models 
    
    class Userinfo(models.Model):  # 3, 继承该类, 
        user = models.CharField(max_length=32)  # varchar(32) # 4, 添加字段
        pwd = models.CharField(max_length=32)                        # 4, 添加字段
    
        def __str__(self):
            return self.user
    
    # 5, 数据库迁移 执行两条命令:
      python manage.py makemigrations # 把models.py的变化记录下来 
                 python manage.py migrate           # 去修改你的数据库

    2,获取表中的数据,以及插入数据:

    # 使用数据库中的数据往往是在视图函数中的需求, 所以需要在 APP文件中的 view.py中使用
    
    from app01 import models # 从自己的app01的包中导入 models 模块. 该模块创建了字段
    
    models.Userinfo.objects.all() # 此方法是获取所有的数据
    
    models.Userinfo.objects.get(user='Fush') # 此方法获取一条字段user='Fush'的数据, 若没有符合条件的数据则报错, 如果有多条则也报错
    
    models.Userinfo.objects.create(user='MJJ',pwd='XJJ') # 此方法是插入数据
  • 相关阅读:
    汇编14:端口
    汇编13:int指令
    整个软件开发的流程
    css grid 布局
    socket粘包处理
    如何做好需求变更管理?——需求变更流程规范
    软件工程需求分析文档模板
    使用layui的form.on绑定select选中事件, form.on()不执行的原因分析
    ID4收藏
    ASP.NET MVC5中View-Controller间数据的传递
  • 原文地址:https://www.cnblogs.com/liuafan/p/9593562.html
Copyright © 2011-2022 走看看