Django笔记02

前端页面两种引入外部资源的方式

  CDN 内容分发网络

  加载本地文件

html文件约定俗成放在templates文件夹下

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

静态文件约定俗成放在static文件下

一般情况下static文件夹下建议分成css,js等相关文件夹实现分层

django静态文件配置
STATIC_URL = '/static/'
# 静态文件路径配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2'),
]

form表单两种提交方式

  1 input type=submit

  2 button按钮

  form表单默认是get请求,可以通过method参数指定提交方式

  参数携带方式 http://127.0.0.1:8000/login/?username=jason&password=123

  action三种指定数据提交路径方式

    1 全路径  http://127.0.0.1:8000/login/

    2 后缀  /login/

    3 不写  不写默认提交到当前路径

  通常情况下视图函数都是get请求

get请求和post请求

  django获取前端请求方式 request.method

  获取get请求提交的数据

    request.GET 携带了前端所有get请求的数据

    username = request.GET.get('username')

    取值遵循字典取值,虽然它的value是列表但是默认取最后一个元素

    可以通过getlist()获取到列表

  获取post请求提交的数据

    request.POST 携带了所有post请求数据

    username = requetst.POST.get('username')   

    取值遵循字典取值,虽然它的value是列表但是默认取最后一个元素

    可以通过getlist()获取到列表

ORM:对象关系映射

  一个类  >>>  数据库的一张表

  类的对象  >>>  数据库的一条记录

  对象点数据(user_obj.name)  >>>  数据库某条记录的某个字段值

  优点:不会sql也可以进行开发,大大提高开发效率

  缺点:可能sql语句执行效率不高

  django连接mysql数据库

    1 配置文件:变量名必须全部大写 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test007',
        'USER':'root',
        'PASSWORD':'123321',
        'HOST':'127.0.0.1',
        'PORT':3306
    }
}

    2 django orm不会自动创建数据库,需要手动创建

     django orm会自动创建表,字段

数据库迁移命令(重点)

  python manage.py makemigrations 记录数据库更改操作

  python manage.py migrate 操作数据库

orm查询user表所有数据

  models.User.objects.all()

orm查询user表的某条数据

  user_queryset = models.User.objects.filter(name=name,password=password)

  只有queryset对象才能点query获取当前对象所对应的sql语句

  可以通过索引的方式从queryset对象中取出数据对象

  queryset支持正数索引取值,但是不推荐使用,orm推荐使用first()

  user_queryset = models.User.objects.filter(name=name,password=password).first()

  只有数据对象才能点出数据

表字段的增删改

  只要修改了models.py中的代码,就必须重新执行数据库迁移命令

  表字段新增:对于已经有数据的表,新增字段的时候要设置默认值,或者指定该字段可以为空

  表字段删除:直接注释掉models.py中的代码

  表字段修改:直接修改models.py中的代码

表的增删改查

  models.User.objects.all() 获取user表中的所有数据

  models.User.objects.filter(id=delete_id).delete() 删除user表中查出的所有数据

  models.User.objects.create(name=username,password=password,addr=addr) 在user表中新增一条数据  

  user_obj = models.User(**request.POST)
  user_obj.save() 新增数据

  models.User.objects.filter(id=id2).update(name=username,password=password,addr=addr)更新数据

  edit_obj = models.User.objects.filter(id=id2).first()
  edit_obj.name = username
  edit_obj.password = password
  edit_obj.addr = addr
  edit_obj.save()  更新数据的另一种方式

只要queryset对象就可以连续点出对于的方法

查表时可以用get获取,但是不推荐

django请求声明周期

图书管理系统表设计
  书籍 >>> 出版社 一对多(注意:外键说法描述只有一对多,没有多对一)
  作者 >>> 书籍 多对多
  出版社

  publish = models.ForeignKey(to='Publish')  # 关联publish表 关联字段默认就是主键id

  authors = models.ManyToManyField(to='Author')  # 自动帮你创建书籍与作者的关系表  不会在当前表里面创建字段

猜你喜欢

转载自www.cnblogs.com/LinChengcheng/p/10697954.html
今日推荐