静态文件及相关配置,request,连接MySQL,django—orm

文章目录

  • 静态文件及相关配置
  • 请求方式
  • request对象方法
  • pycharm连接MySQL
  • django链接MySQL
  • django—orm简介
    • 什么是ORM?
    • 创建过程
  • orm语法
  • orm外键关联

静态文件及相关配置

编写一个登录功能

思路:
1.创建一个django项目并且创建一个app应用
(cmd命令行创建命令:python36 manage.py startapp 应用名)
2.在urls(路由层)添加一组对应关系
3.在views(视图层)书写主要的逻辑代码
4.利用三板斧与前端做交互

注意:

我们之所以可以使用django框架的资源,那是因为urls路由层开设了专门的接口,如果访问不到资源说明未开设专门的接口

什么是静态文件?

静态文件就是HTML页面上那些不经常变动的资源

eg:第三方模块,css相关文件,js相关文件,图片文件
  • 针对静态文件资源一般会放在static文件夹(这不是django自动创建的,需要我们自己手动创建)

    当static文件下出现了很多不同类型的静态文件资源的时候,我们可以将这些问价分门别类,在static文件下创建不同功能的文件夹,然后我们只需要根据功能去到对应的文件夹下创建就好了

  • 针对静态文件资源的访问也需要提前开设相应的接口

    我们可以发现如果我们不开设相应的接口,我们像以前一样的导入css和js文件的时候,不能用,没有效果

    这个时候我们应该想到是settings文件里的配置问题,我们进入到settings文件中,找到STATIC_URL = ‘/static/’ 在这一行代码下新增一个配置

    STATICFLIES_DIRS = [
      		os.path.join(BASE_DIR, 'static')
    ]
    

分析:

STATIC_URL = '/static/'     这里的/static/代表的是接口的前缀,就相当于是钥匙

os.path.join(BASE_DIR, 'static')	这里的static代表的是我们自己创建的static文件夹,用于拼接路径
  • 动态解析

    这是可以防止数据修改的繁琐问题

    代码:{% load static %}

    eg: 
    

请求方式

  • GET请求
    朝别人索要数据,也可以自己携带额外的数据(页面的展示)
    eg:url?xxx=yyy&zzz=ooo&aaa=bbb

    上述携带数据的方式有两个限制

    1.数据只能是一些可以给用户直接看的(无关紧要的非敏感数据)
    2.数据的大小有限制  2kb~4kb左右
    

    GET请求是没有请求体的(HTTP数据格式)

  • POST请求
    朝别人提交数据,也可以自己携带额外的参数
    数据都是放在请求体中,并且对数据的大小没有限制

form表单默认的数据提交方式是GET

参数分析:

method:是提交的方式,就两种(GET,POST)

action:控制数据提交的地址

方式1: 不写,默认提交到当前地址
方式2: 只写后缀('/index')  会自动补全
方式3:  写全称  eg:https://baidu.com

强调:

提交POST请求的时候刚开始我们需要去配置文件中注释掉一行代码

MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
]

request对象方法

request.method:	获取请求方式,结果是一个纯大写的字符串(GET,POST)
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. 可以简单的增删改查

django链接MySQL

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

我们可以去设置里去下载MySQL

我们在下载好的时候,第一次使用的时候需要下载驱动,如果遇到下载超时,我们需要多下载几次

然后我们还需要配置一些东西

  1. 在settings配置文件中修改配置

     DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
         'NAME': 'day55',  # 指定库名
         'USER': 'root',
         'PASSWORD': '123',
         'HOST': '127.0.0.1',
         'PORT': 3306,
         'CHARSET': 'utf8'
     }
    

    }

  2. 在我们运行的时候会遇到问题,这个时候我们需要下载mysqlclient模块

    版本不一致,解决的方式不一致

    django1.11 版本需要在项目或者应用目录下的__init__.py中编写一行代码

     import pymysql
     pymysql.install_as_MySQLdb()
    

    django2.2 以上版本需要使用mysqlclient模块

django—orm简介

什么是ORM?

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

映射关系

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

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. 当我们对数据库或者modules.py文件做了操作的时候,我们需要在终端中运行两行代码:

    数据库迁移/同步命令

    1.将models中有关数据库的操作记录下来(migrations文件夹)
     	 python3.6 manage.py makemigrations
     2.将操作真正影响到数据库中
    	 python3.6 manage.py migrate
    

强调:

表的主键在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()

举例说明:

创建一个学生表

class Student(models.Model):
    name = models.CharField(max_length=20)
    gender = models.BooleanField(default=True)
    age = models.IntegerField(default=0)
    content = models.TextField(max_length=200)
    email = models.EmailField()

单表操作

增
models.Student.objects.create(name='学生A', gender=False, age=122, content='学习优异', email='[email protected]')

# 删
models.Student.objects.get(id=1).delete()

# 改
 models.Student.objects.get(name='学生A')

# 查
models.User.objects.filter(id=1)
# all():查询所有结果;QuerySet

orm外键关联

语法结构:

外键名 = models.ForeignKey("类名",to_field="关联字段",default=默认值,on_delete=models.CASCADE,)  #关联字段必须是唯一的,这个to_field不加也可以,默认用的就是主键
  • 一对多
    外键字段建在多的一方
    publish = models.ForeignKey(to=‘Publish’,on_delete=models.CASCADE)

  • 多对多
    外键字段可以直接写在某张表中 orm会自动帮你创建第三张表
    authors = models.ManyToManyField(to=‘Authors’)

  • 一对一
    外键字段建在查询频率较高的表中
    detail = models.OneToOneField(to=‘AuthorDetail’,on_delete=models.CASCADE)

你可能感兴趣的:(django,django,mysql,python)