Django简单配置与增删改查

Django简单配置与增删改查

静态文件资源

1.首先我们需要先编写一个登录功能
	1.创建一个Django项目并创建个app
	2.在urls.py添加一组对应关系(首先需要先导入我们文件所在的位置)
	3.在app的vires.py中编写登录核心逻辑
	4.利用三板斧与前端做交互

2.我们在使用浏览器访问Django框架可以拿到数据是因为我们提前在配置文件中添加了对应的接口,但是当资源没有显示出内容,那么我们可以看一下对应关系是否配好,打开urls.py查看和进行配置

3.静态文件
	html页面上使用的不经常改变的资源
	1. 第三方框架文件
	2. CSS文件
	3. JS文件
	4. 图片文件
	针对静态文件资源一般都会放在static文件夹内

4.当static目录下出现了很多不同类型的静态文件的话那么我们就应该将他进行再次分类管理例如(CSS文件归一类,JS文件归一类等方便我们查找)
		others文件夹
			存放第三方框架文件
		CSS文件夹
			存放所有的CSS文件
		JS文件夹
			存放所有的JS文件
		img文件夹
			存放所有的img文件

静态文件配置

1.针对静态文件资源的访问其实也需要开设相应的接口(在SETTING文件夹中修改配置)
	STATIC_URL = '/static/'  # 静态文件资源配置,这个static和下方的不一样,这个是用来查询的
	STATICFILES_DIRS = [
        os.path.join(BASE_DIR,'static')  #添加路径像templates一样直接在全局都可以使用
	]

2.接口前缀
	STATIC_URL = '/static/'  # 接口前缀

3.动态解析
	动态解析其实就是我们无论写成怎样的前缀只要调用我们的数据那么就会自动帮我们跳转使用成当前接口
	[% load static %]
	<link rel='stylesheet' href="[% static'bootstrap-3.4.1-dist/css/bootstrap.min.css'%]">

form表单注意事项

1.GET请求
	向客户端索要数据,同时可以携带一些额外的数据传入
		直接会在网页端显示url?xxx=nnn&zzz=yyy&name=joseph
	携带数据拥有两个限制
		1. 数据只能是一些无关紧要的非敏感型数据
		2.数据大小限制只能有2KB~4KB左右

2.POST请求
	向客户端提交数据,并展示,同样也可以携带一些额外数据
		数据都是放在请求体中并且数据大小没有限制,不是所有的请求都有请求体

3.form表单默认的数据提交方式是get
	method='POST'(get也可以是指定提交方式)
	action  控制数据的提交地址
		方式一:不写,朝当前页面所在的地址提交
		方法二:写后缀 /index/  系统会自动帮你补全ip和port
		方法三:写全称 http://www.jd.com/
    
4.提交post请求前期需要去配置文件中注释一行代码
以防止出现403的情况
全局生效:下方那个的是个中间件
	MIDDLEWARE = [
    	#'django.middleware.csrf.CsrfViewMiddleware',
	]  # 只注销这一句即可
 局部生效:
    @csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。
    @csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。
 写法如下:
 	from django.views.decorators.csrf import 			csrf_exempt,csrf_protect
 	@csrf_exempt
 	def index(request):  # 这样表示此函数取消CSRF验证

5、Django中使用ajax做post提交防止出现403错误的方法

request对象方法

1. request.method  获取请求方式结果是纯大写的字符串
2. request.POST  获取POST请求发哦送那个来的普通数据(不包括文件)
	request.POST.get()  默认只获取列表中最后一个数据值,虽然内部获取的是个列表但是其实是个字符串
	request.POST.getlist()  获取键对应的整个列表。无论鸡哥数据值都会获取过来
3. request.GET  后去url后面携带的非敏感数据
	request.GET.get()  默认值获取列表中最后一个数据值
	request.GET.getlist()  获取键对应的整个列表无论有几个数据值

pycharm链接MySQL

1.查找pycharm提供的database按钮
	左下角和右边的侧边框都有database按钮

2.如果没有的话那么就需要下载插件,如果不成功那么就需要考虑重新装一下pycharm,在IT行业有句精髓的话,重启和重装可以解决百分之九十五的故障和报错
	file   >>>:  plugins   >>>: database下载

3.首次连接数据库需要下载对应的驱动
	database   >>>:   Data Source   >>>:   选择MySQL   >>>:   donwlode即可

4.简单的增删改查
	鼠标点点点的方式修改,上访的加号添加一行,然后填入数据就是增加数据,修改数据最后记得一定要点击绿色箭头上传数据否则没有任何更改

Django链接MySQL

Django默认使用的数据库是sqlite3这款数据库比较小,一般我们只用它在本地测试,功能比较少,所以我们一般还是使用MySQL当做数据库

1.配置文件中修改数据
DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE':'django.db.backends.mysql',  # 固定导入
        'NAME': 'django_day2',  # 文件名
        'USER': 'root',  # 用户名
        'PASSWORD': '',  # 密码
        'HOST': '127.0.0.1',  # 地址
        'PORT': 3306,  # 端口号
        'CHARSET': 'utf8'  # utf8一定不能加-如果加了那么就会直接报错
    }
}

2. 指定连接MySQL的模块
	Django1.11版本需要在项目或者应用目录下的__init__.py中编写一行代码
		import pymysql
		pymysql.install_as_MySQLdb()  # 固定添加
	Django2.2以上版本需要添加mysqlclient模块
		直接下载即可
	django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APP
	如果遇到这个报错那么在cmd中输入python manage.py shell就可以解决

Django ORM简介

ORM:对象关系映射
	ORM的存在是为了帮助那些不会使用MySQL的python程序员利用python语法的方式来简单快捷的操作MySQL

类        	  映射成			表
对象          映射成			  记录
对象点属性      映射成			 字段对应的值

1. 先去应用目录下的models.py中编写模型类也就是搭框架
class User(models.Model):
    id = models.AutoField(primary_key=True)  # 类似于定义了主键,并且主键自增
    # mysql语法
    # id int primary key auto_increment
    name = models.CharDield(max_length=32)  # 类似于定义了一个普通字段也就是name我们可以当做MySQL中的varchar
    # MySQL语法
    # name varchar(32)
    pwd = models.IntegerField()  # 类似于定义了一个普通字段密码
    # MySQL语法
    # pwd = int

2.数据库迁移/同步命令
	1.将models中的有关数据库的操作记录下(migrations文件夹)
		python38 manage.py makemigrations
		简写:makemigrations
	2.将操作真正影响到数据库中
		python manage.py migrate
		简写:migrate
	当修改了models中与数据库相关的代码都必须执行上树的命令并且两步都需要执行(在Terminal中),可以简写也可以指定应用单独迁移

3.表的主键在orm中可以不写orm会自动帮你添加一个id的主键,如果你需要的主键不叫id那么你可以自己定义主键,但是一般为id

数据的增删改查

1.查
	models0User.objects.filter()   结果可以看成是一个列表套数据对象
	如何获取对象 可以使用first()方法  如果没有值的话那么就会返回None  我们if判断即可

2.增
	models.User.objects.cerate()  # 新增

3.改
	models.User.objects.filter(id=x).update(需要更改的数据='更改后的数据')  # 直接根据id来找到需要求给的值.update就可以直接填入两个数据就可以直接修改

4.删
	models.User.objects.filter(id=x).delete()  # 最好指定删除,如果不指定的话那么就会直接将整个表都删除

ORM外键关系

1.MySQL的对应关系
一对多
	外键字段建在多的一方
多对多
	外键是创建在第三张表中存储两张表之间的关系
一对一
	外键创建在使用频率较高的那张表中

2.ORM的对应关系
一对多
外键也是创建在多的一方
	publish = models.ForeignKey(to='Publish',on-delete=models.CASCADE)

多对多
外键可以直接在表中编写即可orm会自动帮你创建第三张表用来存储你创建的两张表之间的对应关系
	authors = models.ManyToManyfield(to='Autjors')
一对一
外键字段一样建在查询频率较高的那张表中
	detail = models.OneToOneField(to='AuthorDetail',on-delete=models.CASCADE)
posted @ 2022-08-31 19:14  Joseph-bright  阅读(217)  评论(0编辑  收藏  举报