django-diango基础配置

1、配置静态文件

1、静态文件

网站所使用到的提前写的文件,如图片\js\css\第三方前端模块bootstarp等等

创建文件夹static专门存放静态文件,可以再根据文件类型分文件夹存储,如css文件夹,js文件夹

2、配置

settings.py文件:

STATIC_URL = '/static/'  # 这个是访问静态文件资源的接口前缀,通常情况下接口前缀的名字也叫static

# 手动添加静态文件夹路径
STATICFILE_DIRS = [
    os.path.join(BASE_DIR,'static')  # 可以有多个static文件夹,将static文件里面的所有资源都暴露给用户
]

3、动态绑定

settings.py文件中的网关接口,是所有的静态文件的访问url接口

有必要给它们实现动态绑定,当settings.py中的网关接口改变时,静态文件的访问接口要跟着变,才能保证无论我的网关接口是多少,静态文件的访问都能有效

<!--以login.html文件为例,引用本地bootstrap文件-->

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

2、form表单提交数据

1、默认请求方式是GET,可以通过属性method改为POST

<form action="" method="post">
    <p>username <input type="text" name="username" class="form-control"></p>
    <p>password <input type="password" name="password" class="form-control"></p>
    <input type="submit" value="登陆" class="btn btn-success pull-right">
</form>
'''
1	django后端的视图函数,默认处理的get请求
2	当改为POST请求后,需要在配置文件中修改代码,使得POST请求不会被拒绝 
''' 
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',
		]

2、GET请求提交数据可以携带参数

# 参数形式为:url?key=value&key=value
# 如登陆时提交用户名和密码:
http://127.0.0.1:8000/login/?username=jason&password=jason123     

3、缺点

'''
1	携带的数据不安全
2	携带的数据大小有限制
3	通常只会携带不重要的数据
'''

4、action属性

'''
1	不写,默认朝当前地址提交
2	只写后缀,即只写ip:port之后的url
3	写全路径
'''

3、django后端处理请求

3.1 get与post

1、get请求与post请求

get  # 浏览器向服务端请求数据,如请求登陆
post  # 浏览器向服务端提交数据,后端处理数据,并根据需要返回响应结果

2、视图函数,默认处理get请求,需要修改配置后,才能处理post请求

3、不管是get或post请求,后端都会执行视图函数

3.2 request方法

1、获取请求方式

request.method()  # 获取请求方式,结果为全部大写的字符串,如GET、POST等

2、获取用户请求数据

request.POST  // 获取用户提交的post请求数据
request.GET  // 获取用户提交的get请求数据

# 值为:类字典的一种数据格式,以登陆请求为例,携带数据username=AD&password=123
print(request.GET)
'''
<QueryDict: {'username': ['AD'], 'password': ['123']}>
'''

# 注意:value值是以列表存储,即相同的key的value的值都存放在这里

3、从用户请求数据中,获取用户提交的数据

# 以GET请求为例(登陆)
username = request.GET.get('username')  # get()方法,获取对应的value列表中的最后一个
password = request.GET.get('password')	

username_list = request.GET,getlist('username')  # getlist()方法,获取对应的value列表

4、获取文件
获取form表单提交的文件
先要在form表单中添加属性 enctype="multipart/form-data",表示上传的是文件。所有数据将在FILES中得到

request.FILES.get('文件名')

4、django连接MySQL

4.1 配置文件

django默认的数据库为自带的sqlite3,需要改成自己的mysql

# 原配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
# 改为:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'USER': 'root',
        'PASSWORD': '',
        'HOST':	'127.0.0.1',
        'PORT': 3306,
        'CHARSET': 'utf8'
    }
}

4.2 使用pymysql模块

由于django默认使用的mysqldb连接数据,因为版本问题,无法连接mysql数据库,所以要改成pymysql

在项目同名文件夹下或者应用文件夹下的__init__.py中,导入模块

import pymysql
pymysql.install_as_MySQLdb()

4.3 orm

1、定义模型类

即数据表以及数据表字段的定义

在应用文件夹下的models.py文件中,书写模型类

真正的数据库中,表名是当前应用名_模型表类名

# models.py

# 以User表为例
class User(models.Model):
    uid = models.AutoField(primary_key=True)
    '''
    1、这是定义自增主键的方法
    2、如果不自定义主键,那么django会自动创建一个名为id的自增主键
    3、innodb引擎规定,有且只有一个主键
    '''
   
    username = models.CharField(max_length=32)
    '''
    1、数据库中存储格式为varchar
    2、参数max_length必须有值,否则会报错
    '''
    
    password = models.CharField(max_length=32,null=True)
    # null=True允许字段为空
    
    age = models.IntegerField()
    # 整形可以不指定长度,mysql默认为11
    # 还有BigIntegerField等方法也可以定义整形字段

2、数据库迁移同步

1、修改了数据库的时候,要将修改记录记录到应用文件夹的migrations文件夹内,每一个修改都自成一个py文件

2、将修改操作真正同步到数据库中

命令行操作:

python manage.py makemigrations  # 记录到migrations
python manage.py migrate  # 同步到数据库

注意点:

1、只要有修改数据库的操作,就要执行

2、必须按这个先后顺序执行命令

3、必须都执行

3、增删改

模型表

# 增、改
直接修改源代码,然后执行数据库迁移同步命令即可

# 删除
直接注释掉对应的代码,然后执行数据库迁移同步命令即可
需要注意的是:这样删除之后,数据表的数据无法恢复

模型表数据

# 查
user_obj = models.User.objects.filter(username=username)
'''
0、查所有的建议使用models.User.objects.all()
1、查询结果,类列表的一种数据格式存储:<QuerySet [<User: User object>]>
2、支持索引取值和切片操作,但是不支持负数索引,如可以通过索引取到真正的对象:user_obj = user_obj[0]
3、官方建议获取第一个对象:user_obj = user_obj.first()
'''

# 增加
user_obj = models.User.objects.create(username=username,password=password)


# 删除
models.User.objects.filter(id=delete_id).delete()
# 先查再删,将查出来的将查出来的列表中所有对象全部删除

# 改
models.User.objects.filter(id=edit_id).update(username=username,password=password)
# 先查再改,将查出来的列表中所有对象全部更新


posted @ 2019-11-22 23:17  W文敏W  阅读(282)  评论(0编辑  收藏  举报