zoukankan      html  css  js  c++  java
  • day19 django继续

    上节回顾

    django

    - 路由系统:url.py

    - 视图函数:views.py

          - 模板引擎渲染

               - HttpResonse(字符串)

               - render(request,’index.html’)   渲染html给客户端

          - 数据库操作:models.py

    一、基本的数据库操作

    小例子:实现数据的基本增删改查(CURD)

    前戏:

    1. 数据库设计

    id                 hostname                   ip                 port             status

    2.实现功能

         a.预备阶段

                  创建project  :django-admin startproject  mysite

                  创建app:cd mysite   ----->     python manager.py startapp app01

                  配置模板路径:settings.py  ----->   TEMPLATE

                        'DIRS': [os.path.join(BASE_DIR, 'templates')]

                  配置静态文件:settings.py   ----->   STATICFILES

                            STATIC_URL = '/static/'
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static')
    )

    image

         b.请求URL----->def

         c.views:数据库获取数据

    详细步骤如下:

    • 数据库的创建:
      - 先创建类,也就相当于是数据库的表

          - 字段:表的列

    具体如下:

    image

    from django.db import models
    
    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()

    开始生成表:

    D:projectday19>python manage.py makemigrations

    D:projectday19>python manage.py migrate

    前提:要注册app的名字(settings.py里注册)

    注意事项:

    如果连接mysql的话要手动创建数据库

    修改settings.py下的database字段:

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

    还需要修改__init__.py文件(project下的)

    import pymysql
    pymysql.install_as_MySQLdb()

    url配置:

    image

    views配置

    models配置:

    server.html配置

    路由系统

    静态路由:

    url(r'^add_user$', views.add_user),

    动态路由:

    url(r'^edit_user_new-(?P<nnid>d+).html$', views.edit_user),
    url(r'^edit_user_new-(?P<nnid>d+).html$', views.edit_user,name='mmm'),
        {% url 'mmm' nnid=obj.nid %} =====>   edit_user_new-1.html
    多项目路由配置:
    主urls配置
    from django.conf.urls import url
    from django.conf.urls import include
    from django.contrib import admin
    urlpatterns = [
        url(r'^app01/',include('app01.urls')),
        url(r'^app02/',include('app01.urls')),
        url(r'^app03/',include('app01.urls')),
    ]
     
    从urls.py(需要创建)
    from django.conf.urls import url
    from django.conf.urls import include
    from django.contrib import admin
    from app03 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^test', views.test),
    ]

    视图函数

    获取请求信息:

    request.POST

    request.GET

    request.FILES

    request.method

    响应结果:

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

    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
                      - pymysql
                      在配置目录的init.py中:
                          import pymysql
                          pymysql.install_as_MySQLdb()
     
               
      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(...)

    模板引擎

    特殊规则:
            - 1
                {{k1}}
           
            - 2
                {% if a == 123 %}
               
                {% else %}
               
                {% endif %}
           
            - 3
                {% for item in LIST %}
                    {{item}}
                {% endfor %}
            - 4
                # 索引:字典.k1     列表.1
               
            - 5.自定义模板方法
                - filter:       在if条件中做条件时
                - simple_tag:   在页面仅显示内容时
               
            - 6. extends
                - 模板的继承
               
            - 7. include
                - 导入公共组件

    Cookie

    - 是用户浏览器上的一个键值对
            - 设置超时时间
       
        利用cookie可实现:
            - 登录验证
            - 页面显示条数
            - 拖动位置..

        两大忌讳:
            - 敏感信息
            - 简单

    Session

    - 放置在服务器端的键值对
       
        session = {
            'asdfasdfasd': {'username':'hailong'},
            'asdfasdfasdf': {username:'feinikesi'},
        }

  • 相关阅读:
    rpm离线安装 ZZ https://www.cnblogs.com/Dev0ps/p/11027550.html
    系统记录一下用snmp获得华为/华3 设备cpu使用率的问题
    iperf3使用介绍
    ubuntu16上安装mysql并配置
    etcdserver: mvcc: database space exceeded的处理
    zz kafka的一些细节信息
    ZZ kafka性能问题调优
    日志处理时,遇到多种re表达式轮循匹配的高性能处理方式
    zz 微信小程序image组件中aspectFill和widthfix模式应用详解
    单元格移动时高亮
  • 原文地址:https://www.cnblogs.com/wanghui1991/p/6628052.html
Copyright © 2011-2022 走看看