• Django数据库的增删改查


    通过一个实例学习Django数据库的增删改查

    Django
      - 路由系统 url.py
      - 视图函数 views.py
        - 数据库操作 models.py
        - 模板引擎渲染
          - HttpReponse(字符串)
          - render(request,'/path/a.html',{'name':'root'})

    一、示例:用户基本CURD

    1.数据库设计
      id hostname ip port status
    2.功能的实现
      创建  project   (pycharm)

         django-admin startproject mysite
      创建  app    (pycharm)

         cd mysite
         python manage.py startapp app01
      配置模板路径   

         settings.py
         TEMPLATE
         DIRS: [os.path.join(BASE_DIR,'templates'),]
      配置静态文件

         settings.py
         STATICFILES_DIRS = (
         os.path.join(BASE_DIR,'static'),
         )

    二、路由系统 urls.py
      a. /^servers$ -> servers
      b. url(r'^edit_user_new-(?P<nnid>d+).html$', views.edit_user_new),
      c. url(r'^edit_user_new-(d+).html$', views.edit_user_new,name='bbb'),
        {% url "bbb" 1 %} ==> edit_user_new-1.html
      d. url(r'^edit_user_new-(?P<nnid>d+).html$', views.edit_user_new, name='nnn'),
        {% url "nnn" nnid=1 %} ==> edit_user_new-1.html
      e.
        主urls.py
          url(r'^cmdb/', include('app01.urls')),
          url(r'^config/', include('app02.urls')),
        app01 urls.py
          ...
        app02 urls.py
          ...


    三、视图函数 views.py
      获取请求信息:
        request.POST {'username':'root'..}
        request.GET
        request.FILES
        request.method
        request.body = username=root;age=18;gender=male

      响应结果:
        return HttpReponse(..)
        return render(request,'path/a.html',{})
        return redirect('http://www.baidu.com')

    下面为views返回的三种方法,和前端使用模板的方法,用{{}}调用

    当模板中使用for循环和取字典的值,使用点

    四、Django数据库操作

      1. 类 --> 数据库的表
          字段 --> 列
          对象 --> 一行数据

       class UserInfo(models.Model):
          nid = models.AutoField(primary_key=True)
          username = models.CharField(max_length=32)
          pwd = models.CharField(max_length=64)
          age = models.IntegerField()

    2. 根据app的models.py生成数据库表
       python manage.py makemigrations
       python manage.py migrate

       PS: settings注册app名字
          注意:
        MySQL
          - 手动创建库名
          - settings.py 中配置
            DATABASES = {
              'default': {
              'ENGINE': 'django.db.backends.mysql',
              'NAME':'dbname',
              'USER': 'root',
              'PASSWORD': 'xxx',
              'HOST': '',
              'PORT': '',
              }
            }
          - Django默认链接MySQL:
            - MySqlDB模块,python3里面没有
            - pymysql模块,python3中模块
            在配置目录的init.py中:
              import pymysql
              pymysql.install_as_MySQLdb()

    调用数据库modules里的数据



    3. 数据库基本操作
    a. 查
    models.tb.objects.all()
    models.tb.objects.filter(nid=1)
    models.tb.objects.filter(nid=1).first()

    b. 增
    models.tb.objects.create(...)

    obj = models.tb(...)
    obj.save()
    c. 删
    models.tb.objects.all().delete()
    models.tb.objects.filter(nid=1).delete()
    d. 改
    models.tb.objects.all().update(...)
    models.tb.objects.filter(nid=1).update(...)

    设计数据库表

  • 相关阅读:
    博客园设置自定义壁纸 模板
    html常用标签及属性,常用英语单词
    解释器安装与环境变量的添加
    计算机基础知识
    python 标准库大全
    进程的状态转换详解
    python 合集set,交集,并集,差集,对称差集别搞混
    vue组件,可以通过npm引用的组件
    use vue vuex vue-router, not use webpack
    Webpack+Vue如何导入Jquery和Jquery的第三方插件
  • 原文地址:https://www.cnblogs.com/wangmo/p/7500710.html
Copyright © 2020-2023  润新知