一、路由系统,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

python自动开发之(django)第十九天的更多相关文章

  1. python自动开发之第二十四天(Django)

    一.ModelForm操作及验证 1.class Meta:class Meta: #注意以下字段不能加逗号 model = models.UserInfo #这里的all代指所用的字段,也可以是一个 ...

  2. python自动开发之第二十五天

    一.组合搜索 参考: http://www.cnblogs.com/ccorz/p/5985205.html 二.JSONP 1.在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的,但 ...

  3. python自动开发之第二十三天(Django)

    一.一大波model操作 1. 创建数据库表 # 单表 # app01_user ==> tb1 # users class User(models.Model): name = models. ...

  4. Python Web开发:使用Django框架创建HolleWorld项目

    开发环境搭建 Python环境安装 下载地址:https://www.python.org/downloads// Django安装 打开Windows CMD输入pip install django ...

  5. python自动开发之第二十一天

    一.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? 1.Form表单提交: 提交 -> url > 函数或类中的方法 - .... HttpResp ...

  6. python自动开发之第十八天

    一.JS正则 test - 判断字符串是否符合规定的正则 rep = /\d+/; rep.test("asdfoiklfasdf89asdfasdf") # true rep = ...

  7. python自动开发之第十三天

    1.Paramiko模块下的demo.py程序     前面利用Python中的Paramiko模块可以进行SSH的连接,以及用来传送文件(SFTP),但是无论是哪一种方式,连接都是短暂的,并非是长连 ...

  8. python测试开发django-10.django连接mysql

    前言 Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle.本篇以mysql为例简单介绍django连接mysql进行数据操作 Django连 ...

  9. python测试开发django-7.django模板继承(block和extends)

    前言 打开一个网站时候,点导航栏切换到不同的页面,发现导航部分是不变的,只是页面的主体内容变了,于是就可以写个母模板,其它的子页面继承母模板就可以了. 母模板 可以在母模板中添加多个块标签,每个块标签 ...

随机推荐

  1. linux trap

  2. Grandpa's Estate - POJ 1228(稳定凸包)

    刚开始看这个题目不知道是什么东东,后面看了大神的题解才知道是稳定凸包问题,什么是稳定凸包呢?所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点.知道了这个东 ...

  3. Dubbo xml配置 和注解配置 写法

    <?xml version="1.0" encoding="UTF-8"?><!-- - Copyright 1999-2011 Alibab ...

  4. sqlserver 遇到以零作除数错误的处理 不报错的解决方法

    使用sqlserver 的选项来禁止出现以零除的错误中断,让而让其为null set ansi_warnings offSET ARITHABORT offSET ARITHIGNORE on sel ...

  5. 从客户端(MuliteTextBox2="<a href="http://www....")中检测到有潜在危险的 Request.Form 值

    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报出“从客户端 中检测到有潜在危险的Request.Form值”这样的错.   解决方案一: ...

  6. 【设计模式 - 11】之享元模式(FlyWeight)

    1      模式简介 当系统中存在大量对象时,非常容易造成内存溢出.为了解决这个问题,我们把这些对象中共有的部分抽象出来,如果有相同的业务请求,则直接返回在内存中已有的对象,避免重新创建,这就是享元 ...

  7. 移植QT到ZedBoard(制作运行库镜像) 交叉编译 分类: ubuntu shell ZedBoard OpenCV 2014-11-08 18:49 219人阅读 评论(0) 收藏

    制作运行库 由于ubuntu的Qt运行库在/usr/local/Trolltech/Qt-4.7.3/下,由makefile可以看到引用运行库是 INCPATH = -I/usr//mkspecs/d ...

  8. Qt 学习之路:线程和 QObject

    前面两个章节我们从事件循环和线程类库两个角度阐述有关线程的问题.本章我们将深入线程间得交互,探讨线程和QObject之间的关系.在某种程度上,这才是多线程编程真正需要注意的问题. 现在我们已经讨论过事 ...

  9. 实例详解 EJB 中的六大事务传播属性--转

    前言 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACI ...

  10. auth tips

    https://scotch.io/tutorials/easy-node-authentication-setup-and-local https://scotch.io/tutorials/upg ...