zoukankan      html  css  js  c++  java
  • python自动开发之(django)第十九天

    一、路由系统,URL
      1、函数及类

        函数:url(r'^index/', views.index),     

        类:url(r'^home/', views.Home.as_view()),
      2、顺序

        url(r'^detail-(d+)-(d+).html', views.detail),
      3、字典

        url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html', views.detail)
      PS:
        def detail(request, *args,**kwargs):
          pass

      实战:
      a.
        url(r'^detail-(d+)-(d+).html', views.detail),
        def func(request, nid, uid):
          pass

        def func(request, *args):
          args = (2,9)

        def func(request, *args, **kwargs):
          args = (2,9)

      b.
      url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html', views.detail)
        def func(request, nid, uid):
          pass

        def funct(request, **kwargs):
          kwargs = {'nid': 1, 'uid': 3}

          def func(request, *args, **kwargs):
            args = (2,9)
      4、 name

      对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****

        url(r'^asdfasdfasdf/', views.index, name='i1'),
        url(r'^yug/(d+)/(d+)/', views.index, name='i2'),
        url(r'^buy/(?P<pid>d+)/(?P<nid>d+)/', views.index, name='i3'),

        def func(request, *args, **kwargs):
          from django.urls import reverse

        url1 = reverse('i1') # asdfasdfasdf/
        url2 = reverse('i2', args=(1,2,)) # yug/1/2/
        url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/


        xxx.html

        {% url "i1" %} # asdfasdfasdf/
        {% url "i2" 1 2 %} # yug/1/2/
        {% url "i3" pid=1 nid=9 %} # buy/1/9/

        注:
          # 当前的URL
          request.path_info
      5、多级路由

        project/urls.py
        from django.conf.urls import url,include
        from django.contrib import admin

        urlpatterns = [
          url(r'^cmdb/', include("app01.urls")),
          url(r'^monitor/', include("app02.urls")),
        ]

        app01/urls.py
        from django.conf.urls import url,include
        from django.contrib import admin
        from app01 import views

        urlpatterns = [
          url(r'^login/', views.login),
        ]

        app02/urls.py
        from django.conf.urls import url,include
        from django.contrib import admin
        from app02 import views    urlpatterns = [      url(r'^login/', views.login),    ]


      6、默认值(欠)

      7、命名空间(欠)


    二、视图
      1、获取用户请求数据
        request.GET
        request.POST
        request.FILES
        PS:
          GET:获取数据
          POST:提交数据

      2、checkbox等多选的内容
        request.POST.getlist()
      3、上传文件
        # 上传文件,form标签做特殊设置
        obj = request.FILES.get('fafafa')
        obj.name
        f = open(obj.name, mode='wb')
        for item in obj.chunks():
        f.write(item)
        f.close()

      4、FBV & CBV
        function base view
        url.py
          index -> 函数名
        view.py
          def 函数(request):
          ...
        ====》
        /index/ -> 函数名
        /index/ -> 类    

        ====》
        建议:两者都用

      5、装饰器
        欠


    三、ORM操作
        select * from tb where id > 1
        # 对应关系
        models.tb.objects.filter(id__gt=1)
        models.tb.objects.filter(id=1)
        models.tb.objects.filter(id__lt=1)

      创建类

      a. 先写类
        from django.db import models

        # app01_userinfo
          class UserInfo(models.Model):
        # id列,自增,主键
        # 用户名列,字符串类型,指定长度
          username = models.CharField(max_length=32)
          password = models.CharField(max_length=64)

      b. 注册APP

        INSTALLED_APPS = [
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
          'app01',
        ]
      c. 执行命令
        python manage.py makemigrations
        python manage.py migrate

      d. ********** 注意 ***********
        Django默认使用MySQLdb模块链接MySQL
        主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
        import pymysql
        pymysql.install_as_MySQLdb()

      1. 根据类自动创建数据库表
        # app下的models.py
          python manage.py makemigrations
          python manage.py migrate


      字段:
      字符串类型
      数字
      时间
      二进制
      自增(primary_key=True)
      字段的参数:
        null -> db是否可以为空
        default -> 默认值
        primary_key -> 主键
        db_column -> 列名
        db_index -> 索引
        unique -> 唯一索引
        unique_for_date ->
        unique_for_month
        unique_for_year
        auto_now -> 创建时,自动生成时间
        auto_now_add -> 更新时,自动更新为当前时间

      # obj = UserGroup.objects.filter(id=1).update(caption='CEO')
      # obj = UserGroup.objects.filter(id=1).first()
      # obj.caption = "CEO"
      # obj.save()

      choices -> django admin中显示下拉框,避免连表查询
      blank -> django admin是否可以为空
      verbose_name -> django admin显示字段中文
      editable -> django admin是否可以被编辑
      error_messages -> 错误信息欠
      help_text -> django admin提示
      validators -> django form ,自定义错误信息(欠)


      创建 Django 用户:python manage.py createsuperuser

      2. 根据类对数据库表中的数据进行各种操作
        一对多:
        a. 外键
        b.
        外键字段_id
        c.
        models.tb.object.create(name='root', user_group_id=1)
        d.
        userlist = models.tb.object.all()
        for row in userlist:
        row.id
        row.user_group_id
        row.user_group.caption

  • 相关阅读:
    POJ 1401 Factorial
    POJ 2407 Relatives(欧拉函数)
    POJ 1730 Perfect Pth Powers(唯一分解定理)
    POJ 2262 Goldbach's Conjecture(Eratosthenes筛法)
    POJ 2551 Ones
    POJ 1163 The Triangle
    POJ 3356 AGTC
    POJ 2192 Zipper
    POJ 1080 Human Gene Functions
    POJ 1159 Palindrome(最长公共子序列)
  • 原文地址:https://www.cnblogs.com/willpower-chen/p/6182628.html
Copyright © 2011-2022 走看看