10.21(day57)

三板斧(httpresponse,render,rediect)

用户能够访问到的资源都是程序猿提前暴露好的

如果没有暴露,用户永远访问不了

httpresponse:返回字符串

render:返回html页面

redicect:重定向

django是会自动重启的,但是反应速度比较慢

静态文件配置

静态文件:网站用到的自己写好的js,css,第三方框架bootstrap,fontwesome,sweetalter

通常情况下 网站所用到的静态文件资源 统一都放在static文件夹下

STATIC_URL = '/static/' # 是访问静态资源的接口前缀
只要你想访问静态资源 你就必须以static开头
也手动配置静态文件访问资源

 STATICFILES_DIRS = [
        os.path.join(BASE_DIR,'static'),
        os.path.join(BASE_DIR,'static1'),
        # os.path.join(BASE_DIR,'static2'),
    ]

接口前缀的动态解析,

 {% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
    <script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>

之前提到的form表单的action参数,其实就是提交地址

不写的话默认当前地址提交,也可以只写后缀如/index/,或者写完全路径

至于提交方式,默认是get请求,

get请求也可以携带参数,写在url?后面

缺点是不安全,携带的参数可见,携带的参数不能超过4kb

如果发的post请求,需要注释settings中的一个文件

MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            # 'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
        ]

request对象及方法

获取post请求携带的数据

request.POST

获取get请求携带的数据

request.GET

get与post在后端获取用户数据的时候,规律是一样的

get去数据是去最后一个

如
 <QueryDict: {'username': ['admin', 'tank'], 'password': ['123']}>
        tank <class 'str'>
        123 <class 'str'>
        request.POST.get('username')

如果想要完整的取出,需要用getlist()

python连接数据库,django连接数据库

django连接数据库

在settings文件中修改配置

DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql',  # 指定数据库 MySQL postgreSQL
                        'NAME': 'day56',  # 到底使用哪个库
                        'USER':'root',  # 用户名
                        'PASSWORD':'root', # 密码
                        'HOST':'127.0.0.1',  # IP地址
                        'PORT':3306, # 端口号
                        'CHARSET':'utf8' # 编码格式
                    }
                }

django默认使用的mysqldb连接数据库,但是该模块现在不支持了

在项目下的__/init__也可以在应用名下面的init文件中

import pymysql

pymysql.install_as_MySQLdb()

django的orm简介

映射关系

类 数据库的表

对象 表的记录

对象获取属性 记录的某个字段对应的值

优点:能够让不会操作数据库得人也能简单快捷使用数据库

缺点,封装程度太高导致程序的执行效率偏低,有时候结合项目需求,可能需要手写sql语句

注意事项:

django的orm不会自动帮你创建数据库,库需要你自己手动创建

表会帮你自动创建,只要书写符合django orm语法的代码即可

去应用下所在的models中书写类

from django.db import models

    # Create your models here.
    class Userinfo(models.Model):
        # 设置id字段为userinfo表的主键  id int primary key auto_increment
        id = models.AutoField(primary_key=True)  # 在django中 你可以不指定主键字段 django orm会自动给你当前表新建一个名为id的主键字段
        # 设置username字段  username varchar(64)  CharField必须要指定max_length参数
        username = models.CharField(max_length=64)  # 在django orm中 没有char字段  但是django 暴露给用户 可以自定义char字段
        # 设置password字段  password int
        password = models.IntegerField()

数据迁移命令

python manage.py makemigrations

不会创建表,生成一个记录,记录在一个地方(migrations文件夹)

python manege.py migrate

将你的orm语句迁移到数据库中

只要修改了数据库的代码,就需要执行者两条命令

字段的增删改查,数据的增删改查

字段

新增:直接提供默认值 default,设置字段可以为空 null=True

删除:注释字段(尽量不要用,注释后原来字段的数据会消失)

数据

查询:

get(),条件存在获取数据对象本身,不存在则会直接报错,所以不推荐get方法

filter(),条件存在的情况下获取的是一个可以看成列表的数据,列表内放的是一个个数据对象本身

条件不足的情况下不会报错,返回一个可以看成空列表的数据

可以写多个参数逗号隔开,在查询的时候这些参数时and关系

filter的结果不支持负数索引取值,推荐使用封装好的方法first取第一个值

新增

create(),根据括号内关键字参数的形式,创建数据,该方法会返回一个返回值,返回值就是当前对象本身

利用对象点方法的方式

user_obj = User(username='jason')

user_obj.save() 将当前对象保存在数据库中

posted @ 2019-10-21 16:47  ZJJJJJJJ  阅读(89)  评论(0编辑  收藏  举报