Django7

app01自己创建的目录

  -views.py

 

sqlhelper  封装sql语句

  

Django:

  -路由

  -视图

  -模板

  -ORM(类---表,对象--行:pymysql连接数据库)

 

Torando:

  -路由

  -视图

  -模板

  -自由:pymysql:sqlachemy

 

flask:

  -路由

  -视图

  -模板(第三方组件)

  -自由:pymysql;sqlachemy

 

今日内容:

  1.路由系统

      url--->函数

  之前的127.0.0.1:8080/edit/?nid=fff

    url(r"^edit/",views.edit),

    def edit(request):

      request.GET.get("nid")

      return HttpResponse("...")

  

  现在的

    url(r"^edit/(\w+)/",views.edit),

    def edit(request,a1):

      a1就是自动接收后面的正则

 

  url里面可以写正则表达式,其实Django的url就是正则表达式

    url两种写法需要保持一致性。

    位置参数  /edit/(\w+)/(\w+)  两个位置参数

    关键字参数  /edit/(?P<a1>\w+)/(?P<a2>\w+)  就把a1的值赋值给形参是a1的。

 

    b.url终止符  /或者$

    c.伪静态,在url中伪造为html

    url(r"^edit/(\w+).html$",views.edit)

    d.路由分发

      urls.py   引入include模块

       url(r"^app01/",include("app01.urls")),  总路由先匹配app01,再去app01.urls找匹配

      app01.urls.py

        url(r"^index.html$",views.index),

    e.根据名字反生成url,  给url取了个别名,在权限系统中会用到

       url(r"^index/(\d+)/", views.index,name="n1"),

      在view代码中  from django.urls import reverse

      v = reverse("n1",args=(123,))

      

       url(r"^index/(?P<a1>\d+)", views.index,name="n1"),

      v = reverse("n1",kwargs={a1:123})

     应用,就是不用写url了,  

    在html中,模板渲染(n1,映射名字,i是参数)

    {% url "n1” i %}

    

    

  2.视图函数  CBV,FBV

  3.ORM操作

      Http请求:

      url==》(视图)模板+数据

    ORM

    操作表:

      创建表

      修改表

      删除表

    操作数据行:

      增删改查

    ORM利用pymysql第三方工具连接数据库

    默认:

      sqllite

    默认:

      mysql  ==》 MysqlDB(修改django默认连接mysql方式)

  步骤:

    1.创建数据库

    2.在seetings文件

    DATABASES = {

    'default': {
    'ENGINE''django.db.backends.mysql',
    'NAME':'dbname',
    'USER''root',
    'PASSWORD''xxx',
    'HOST': '',
    'PORT': '',
    }
}  
    3.在__init__文件
    import pymysql
    pymysql.install_as_MySQLdb() 

    

    4.在Model中,写类

    

    5.注册app  在settings中

    6.创建数据表

      命令:python manage.py makemigrations

          python manage.py migrate

 

#增加
#models.UserGroup.objects.create(title="销售")

#models.UserInfo.objects.create(user="root",password="123",age=18,ug_id=1)

#查找 group_list是个类似列表的Queryset对象 里面的元素是obj,每个obj是一行数据。 
#那所有
#group_list = models.UserGroup.objects.all()

#多个条件之间默认是AND关系
#group_list = models.UserGroup.objects.filter(id=1,title="销售")

#大于小于
#group_list = models.UserGroup.objects.filter(id__gt=1)
#group_list = models.UserGroup.objects.filter(id__lt=1)

#删除,先查询
#models.UserGroup.objects.filter(id=2).delete()

#跟新,先查询
#models.UserGroup.objects.filter(id=2).update(title="公关部")

 

 

  结构目录:

  python manage.py satrtapp app01

  project

    -app01

        -admin  Django自带后台管理相关配置

        -models  写类,会根据类创建数据库表

        -tests  单元测试

        -views  业务处理

  

作业:

  学员管理(sql换成ORM)

  新url方式:

    1.班级增删改查

      -edit-class/?nid=1

      -edit-class/1.html

    2.学生管理(FK连表,正向操作,反向操作)

  PS:神奇的双下划线

posted on 2018-09-03 11:24  castiel_lee  阅读(83)  评论(0)    收藏  举报

导航