目录
静态文件及相关配置
一、编写登录功能
步骤:
1.创建django项目并创建一个app
2.在urls.py添加一组对应关系
3.在app的views.py中编写登录核心逻辑
4.利用三板斧与前端交互
二、访问资源
我们在访问django框架资源的时候,之所以可以拿到数据是因为提前在urls.py中开设了相应的资源接口
如果访问不到资源,那么就是没有开设相应的接口
三、静态文件
1.定义:
html页面上使用的不经常改变的资源
例如:第三方框架文件、css文件、js文件、图片文件
2.位置:
针对静态文件资源一般都会放在static文件夹内
3.static文件夹:
当static目录下出现了很多不同类型的静态文件济源,那么还可以分类管理
others文件夹:第三方框架文件
css文件夹:所有的css文件
js文件夹:所有的js文件
img文件夹:所有的img文件
4.针对静态文件资源的访问也需要提前开设相应的接口
STATIC_URL = '/static/' # 接口前缀
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 静态文件资源配置
5.接口前缀
STATIC_URL = '/static/' # 接口前缀
6.动态解析
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap-theme.min.css' %}">
请求方法
一、GET请求
'''url:统一资源定位符(网址)'''
朝别人索要数据
也可以携带额外数据
url?xxx=yyy&zzz=ooo&aaa=bbb
上述鞋带数据的方式有两个限制
1.数据只能是一些无关紧要的非敏感数据
2.数据大小有限制 2kb~4kb左右
GET请求没有请求头(http数据格式)
二、POST请求
朝别人提交数据
也可以携带额外数据
数据都是放在请求体中,并且数据不限大小
三、form表单默认的提交方式是GET
method = 'post'
action 控制数据的当前提交地址
方式一:不写 # 朝当前地址所在的地址提交
方式二:写后缀/index/ # 自动补全ip和port
方式三:写全称 http://www.baidu.com/
四、提交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',
]
request的对象方法
对象方法 | 说明 |
---|---|
request.method | 获取请求方式,结果是纯大写的字符串 |
request.POST | 获取POST请求发送来的普通数据(不包含文件) |
request.POST.get() | 默认只获取列表最后一个数据值 |
request.POST.getlist() | 获取键对应的整个列表无论有几个数据值 |
request.GET | 获取url后面携带的非敏感数据 |
request.GET.get() | 默认只获取列表中的最后一个数据 |
request.GET.getlist() | 获取键对应的整个列表,无论有几个数据值 |
连接数据库
一、pycharm链接MySQL
1.查找pycharm提供的database按钮
左下角或右侧边栏,或下载插件,或者卸载重装pycharm
2.首次链接数据库需要下载对应的驱动
3.简单的增删改查
二、django连接数据库
django默认使用的是sqlite3,但是这款数据库一般只用于本地测试,功能较少
1.配置文件中修改配置
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定数据库名称
'NAME':'userinfo', # 库名
'USER': 'root', # 管理员名称
'PASSWORD': '123', # 密码
'HOST': '127.0.0.1',
'PORT': 3306,
'CHARSET': 'utf8'
}
}
2.指定链接mysql的模块
django1.11 版本需要在项目或者用于目录下的__init__.py中编写一段代码
import pymysql
pymysql.install_as_MySQLdb()
django2.2 以上版本需要使用mysqlclient模块
报错就百度
'''下载不了mysqlclient'''
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
找到适配版本:
mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl
pip install mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl
django orm
一、orm(对象关系映射)的介绍
在关系型数据库和业务实体对象之间做一个映射。
orm的存在可以让不会MySQL的python程序员不需要使用SQL语句。
映射成 | |
---|---|
类 | 表 |
对象 | 记录 |
对象属性点 | 字段对应的值 |
二、代码演示
1.先去应用目录下的models.py编写模型类
class User(models.Model): # 类似于定义了表名
# 在mysql语句中 id int primary key auto_increment
id = models.AutoField(primary_key=True) # 类似于定义了主键id
# 在mysql语句中 name varchar(32)
name = models.CharField(max_length=32) # 类似于定义普通字段 name
# 在mysql语句中 pwd int
pwd = models.IntegerField() # 类似于定义普通字段 pwd
2.数据库迁移/同步命令
2.1.将models中有关数据库的操作记录下来(migration文件夹)
python38 manage.py makemigrations
2.2.将操作真正影响到数据库
python38 manage.py migrate
'''每当修改了models中与数据库相关的代码,都必须执行上述命令'''
ps:可以简写 也可以指定应用单独迁移/同步
3.表的主键在orm中,可以不写,orm会自动帮你添加一个id的主键
如果需要的主键名称不叫id,只能自己创建
三、orm语法
1.查
models.User.objects.filter()
# 结果可以看成是一个列表套对象
如何获取对象:
可以使用first()方法,如果没有只会返回None,我们可以if判断
2.增
models.User.object.create()
3.改
models.User.object.filter(id=1).update(name='jason')
4.删
models.User.object.filter(id=4).delete()
四、orm外键关联
mysql表与表的关系
# 一对多
外键字段建在多的一地方
# 多对多
外键字段建在第三张关系表中
# 一对一
外键建在查询频率高的表中
orm表与表的关系
# 一对多
外键字段建在多的一方
publish = models.ForeignKey(to='Publish',on_delete=models.CASCADE)
# 多对多
外键字段可以直接写在某张表中,orm会自动帮忙创建第三张表
authors = models.ManyToManyField(to='Authors')
# 一对一
外键字段建在查询频率比较高的表中
detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)
标签:文件,models,数据库,request,django,ORM,orm
From: https://www.cnblogs.com/Zhang614/p/16644938.html