django初级对象与链接数据库

今日内容概要

  • 静态文件及相关配置

  • request对象方法

  • pycharm连接MySQL

  • django连接MySQL

  • django orm简介

  • orm基本操作

1.先编写一个登录功能
	1.创建django项目并创建一个app
 	2.在urls.py添加一组对应关系
  	3.在app的views.py中编写登录核心逻辑
  	4.利用三板斧与前端做交互
    
2.我们在访问django框架资源的使用之所以可以拿到数据是因为提前在urls.py中开设了相应的资源接口,如果访问不到资源那么就是没有开设相应的接口


3.静态文件
	html页面上使用的不经常改变的资源
    	1.第三方框架文件
       2.css文件
    	3.js文件
       4.图片文件
   	针对静态文件资源一般都会放在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.min.css' %}">

请求方法

"""
URL:统一资源定位符(网址)
"""
1.GET请求
	朝别人索要数据	
    	也可以携带额外的数据
        	url?xxx=yyy&zzz=ooo&aaa=bbb
       上述携带数据的方式有两个限制
    		1.数据只能是一些无关紧要的非敏感数据
       	  2.数据大小有限制 2KB~4KB左右
       GET请求没有请求体(HTTP数据格式)
2.POST请求
	朝别人提交数据
    	也可以携带额外的数据
        	数据都是放在请求体中 并且数据大小没有限制
            
3.form表单默认的数据提交方式是get
	method = 'post'
 	action  控制数据的提交地址
    	方式1:不写 朝当前页面所在的地址提交
       方式2:写后缀 /index/  自动补全ip和port
       方式3:写全称 https://www.baidu.com/

4.提交post请求前期需要去配置文件中注释一行代码
	MIDDLEWARE = [
    # 'django.middleware.csrf.CsrfViewMiddleware',
]

request对象方法

request.method	获取请求方式 结果是纯大写的字符串
request.POST  	获取POST请求发送来的普通数据(不包含文件)
	 request.POST.get()     默认只获取列表中最后一个数据值
  	 request.POST.getlist()  获取键对应的整个列表 无论有几个数据值
request.GET	   获取url后面携带的非敏感数据
	request.GET.get()     默认只获取列表中最后一个数据值
  	 request.GET.getlist()  获取键对应的整个列表 无论有几个数据值

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按钮
	左下角或右侧边栏或下载插件或卸载重装
2.首次链接数据库需要下载对应的驱动
3.简单的增删改查
4.有时间的情况下自行研究更多操作

django链接MySQL

django默认使用的是sqlite3 但是这款数据库一般只用于本地测试 功能较少

1.配置文件中修改配置
	DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
        'NAME': 'day55',  # 指定库名
        '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模块

django orm

ORM:对象关系映射

类			 映射成				 表
对象			映射成				   记录
对象点属性    映射成           字段对应的值
"""
ORM的存在可以让不会MySQL的python程序员 使用python的语法简单快捷的操作MySQL
"""

1.先去应用目录下的models.py编写模型类
	class User(models.Model):  # 类似于定义了表名
        # id int primary key auto_increment
        id = models.AutoField(primary_key=True)  # 类似于定义了主键
        # name varchar(32)
        name = models.CharField(max_length=32)  # 类似于定义了普通字段
        # pwd int
        pwd = models.IntegerField()  # 类似于定义了普通字段
2.数据库迁移/同步命令
	1.将models中有关数据库的操作记录下来(migrations文件夹)
		python38 manage.py makemigrations
 	2.将操作真正影响到数据库中
    	python38 manage.py migrate
	'''当修改了models中与数据库相关的代码 都必须执行上述的命令'''
	ps:可以简写 也可以指定应用单独迁移/同步
    
3.表的主键在orm中 可以不写 orm会自动帮你添加一个id的主键
	如果你需要主键的名称不叫id 只能自己创建

orm语法

1.查
	models.User.objects.filter()  结果可以看成是一个列表套数据对象
	如何获取对象 可以使用first()方法 如果没有值会返回None 我们if判断即可
2.增
	models.User.objects.create()
3.改
	models.User.objects.filter(id=1).update(name='jasonNB')
4.删
	models.User.objects.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)
posted @ 2022-08-31 21:09  懒羊羊A  阅读(32)  评论(0)    收藏  举报