1. 静态文件的配置

1.默认情况下所有的html文件都是放在templates文件夹内的

2.什么是静态文件

  1. 网站所使用到的提前写的css js 第三方的前端模块,图片都叫做静态资源

3.默认情况下网站所使用的静态文件资源全部都会放在static文件夹内

  1. 手动创建static文件夹,根据静态资源分别创建子文件夹:
  2. 通常情况下,在static文件夹内还会再见其他文件夹:
  3. css 文件夹
  4. js 文件夹
  5. font 文件夹
  6. img 文件夹
  7. Bootstrap
  8. fontawesome(图标库)
  9. 为了更加方便的管理文件
  10. django 需要你自己手动创建静态文件存放的文件夹
  • 视图函数都必须有返回值,并且返回值都是HttpResponse对象
  • 用户在浏览器中输入的网址能够访问到相应的资源,前提是后端提前开设该资源的访问接口,后端没开设则会出现404

手动静态文件的访问资源

  • django后端如果想暴露后端资源,必须去url里面开设对应的资源接口

    1. 引入bootstrap时会报404找不到,需要去后端中配置
    2. settings文件中,最下面手动开设静态文件访问资源,手动添加以下代码
    3. # 将static文件里的所有资源都暴露给用户
    4. STATICFILES_DIRS = [
    5. os.path.join(BASE_DIR,'static')
    6. ]
  1. STATIC_URL = '/static/' # 访问静态文件资源接口前缀 通常情况下接口前缀的名字也叫static (接口前缀叫什么,配置文件中也需要使用什么)
  2. # 手动开设静态文件访问资源
  3. STATICFILES_DIRS = [ # 静态资源所在的文件夹路径
  4. os.path.join(BASE_DIR,'static'), # 将static文件里面所有的资源暴露给用户
  5. os.path.join(BASE_DIR,'static1'), # 将static文件里面所有的资源暴露给用户
  6. ]
  7. 接口前缀会向STATICFILES_DIRS文件路径中查找路径文件夹,自上而下

静态文件的动态绑定

  1. {% load static %}
  2. <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
  3. <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
  • 小技巧:清除浏览区页面使用的缓存

    1. 浏览器检查 -- settings -- Network -- Disable cache(禁止缓存)

2.request方法

2.1 请求方式

  • form表单默认是get请求

    将form表单中改为method = 'post',post请求

    1. get请求也能携带参数,在url? 后面
    2. 1.携带的数据不安全
    3. 2.携带的数据大小会有限制
    4. 3.通常只会携带一些不是很重要的数据
  • action = " "

    1. 1.不写 默认朝当前地址提交
    2. 2.只写后缀 /index
    3. 3.写全路径 https://www.baidu.com
  • 前期我们在朝后端提交post请求出现forbidden(403) 的情况你需要去配置文件中注释掉一行内容

    1. # 中间件
    2. MIDDLEWARE = [
    3. 'django.middleware.security.SecurityMiddleware',
    4. 'django.contrib.sessions.middleware.SessionMiddleware',
    5. 'django.middleware.common.CommonMiddleware',
    6. # 'django.middleware.csrf.CsrfViewMiddleware',
    7. 'django.contrib.auth.middleware.AuthenticationMiddleware',
    8. 'django.contrib.messages.middleware.MessageMiddleware',
    9. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    10. ]
  • django后端的视图函数 默认处理的是get请求无论是发get请求还是post请求 都会执行视图函数

    1. def login(request):
    2. print('来啦 老弟~')
    3. return render(request,'login.html')
  1. get请求指向拿到login页面
  2. post请求想提交数据 然后后端做校验

2.2 获取前端的请求方式

如何判断当前请求方式

request.method

request.method 拿到的是字符串大写的请求方式 GET POST

  1. def login(request):
  2. # if request.method == 'GET':
  3. # print('来啦 老弟~')
  4. # print(request.method,type(request.method)) # 获取前端请求方式
  5. # return render(request,'login.html')
  6. # elif request.method == 'POST':
  7. # print('post业务逻辑')
  8. # return HttpResponse('收到了')
  9. if request.method == "POST":
  10. return HttpResponse('收到了')
  11. return render(request,'login.html')

2.3 request方法

如何获取用户提交的post数据,后端获取前端的数据都会变为字符串类型

request.method

  1. 获取请求方式 并且纯大写的字符串

request.POST

  1. 获取用户提交的post请求数据
  1. 如何获取用户数据(******)
  2. request.POST.get() # 默认只会获取列表最后一个元素
  3. request.POST.getlist() # 如果你想获取列表 用getlist()

request.GET

  1. 获取用户提交的get请求数据
  1. request.GET.get() # 默认只会获取列表最后一个元素request.GET.getlist() # 如果你想获取列表 用getlist()

.get方法

  1. request.get方法默认只取列表的最后一个元素,
  2. 如果直接获取列表,使用get.list

3. pycharm连接MySQL

先安装插件

连接之后,apply确认.

以下操作:

4. django连接MySQL数据库

必须有两步操作

4.1.配置文件配置

settings文件配置中DATABASES 添加键值对

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql', # 指定数据库类型
  4. 'NAME': 'day49', # 指定库的名字
  5. 'USER':'root', # 注意 键必须是全大写
  6. 'PASSWORD':'',
  7. 'HOST':'127.0.0.1',
  8. 'PORT':3306,
  9. 'CHARSET':'utf8'
  10. }
  11. }

4.2.指定使用的数据库连接模块

主动告诉django 不要用默认的mysqldb连接 而是用pymysql

  • 你可以在项目名下的__init__.py中书写
  • 也可以在应用名下的__init__.py中书写
  1. import pymysql
  2. pymysql.install_as_MySQLdb()

5.django orm简介

5.1 基本概念

1. orm对象关系映射

  1. 表对象
  2. 数据对象点属性 字段对应的值

2. 为什么使用orm

  1. 能够让不会数据库操作的人也能够简单方便去操作数据库

3. 缺点

  1. 封装程度太高 有时候会出现查询效率偏低的问题
  2. 所以工作中
  3. 简单的用orm
  4. 复杂的 追速度 需要你手动书写sql语句

5.2 django中操作orm

  1. 书写模型类
  2. 去应用下的models.py中书写模型类(就是类)
  • 之后在写django项目的时候 一个django就对应一个数据库
  • 不要出现多个项目使用同一个数据的情况(******)
  • 当不指定主键的时候django会自动创建一个名为id 的字段作为主键
  • 如果自己创建了,django就不会创建
  • django中默认没有char字段,但支持用户自定义

1. 数据库迁移(同步)命令

创建orm字段的后必须要执行同步命令

1.python3 manage.py makemigrations

  1. 记录操作: 将数据库的修改 记录到小本本上(migrations文件内)

2.python3 manage.py migrate

  1. 操作执行: 将修改操作真正的同步到数据库中
  • 上面命令必须同时出现
  • 只要修改了models里面跟数据库相关的代码 你就必须重新执行上面两条命令

创建表后

2. 模型表类字段的增删改查

修改字段

  1. 直接修改代码,然后执行数据库迁移命令即可

添加字段

  1. models.IntegerField() 执行迁移命令
  2. 注意设置默认值
  3. # 方式1 设置默认值
  4. email = models.EmailField(default='123@qq.com') # varchar
  5. # 方式2 允许字段为空
  6. phone = models.BigIntegerField(null=True)
  7. # 直接在提示中给默认值
  8. gender = models.CharField(max_length=32)

删除字段

  1. 直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)

3.模型表数据的增删改查

查询数据.filter()

  1. data = models.User.objects.filter(username=username)
  2. print(data) # <QuerySet [<User: User object>]>
  • filter返回的结果是一个"列表",里面才是真正数据对象
  • filer括号内可以放多个关键字参数 这多个关键字参数在查询的时候 是and关系

查询所有的数据.all()*

  1. user_list = models.User.objects.all() # models.User.objects.filter()
  2. """
  3. 结果是一个"列表" 里面是一个个的数据对象
  4. """

取值

支持索引取值,但推荐使用.first()方法取值

  1. 支持切片,但不支持负数

增加数据.create()

create方法会有一个返回值 返回值就是当前被创建的对象本身

  1. user_obj = models.User.objects.create(username=username,password=password)
  2. print(user_obj,user_obj.username,user_obj.password)

更改数据.update()

.filter().update()

  1. models.User.objects.filter(id=edit_id).update(username=username,password=password)
  2. """
  3. 批量操作 会将filter查询出来的列表中所有的对象全部更新
  4. """

删除数据.filter().delete()

批量操作 会将filter查询出来的列表中所有的对象全部删除

  1. models.User.objects.filter(id=delete_id).delete()
  2. """
  3. 批量操作 会将filter查询出来的列表中所有的对象全部删除
  4. """

总结

  1. 创建app需要在settings中注册app
  1. INSTALLED_APPS
  2. 'app01'
  1. 三剑客

    1. render 前端页面
    2. HttpResponse() 提交字符串
    3. redirect() 重定向
  2. cmd创建app时需要在settings中TEMPLATES添加路径
  1. 'DIRS': [os.path.join(BASE_DIR, 'templates')]
  1. 默认情况下所有的html文件都放在template文件夹内

  2. 静态文件: 网站所提前写好的css,js,第三方模块,图片都叫做静态文件

  3. 默认情况下网站所用到的静态文件全部放在 static文件夹内,文件夹内部根据需求不同,再次分目录存放

  4. 手动创建static文件夹,将bootstrap放入文件夹内,并导入

  5. 开通接口,将静态文件资源导入,settings中最下面,手动添加STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]

  6. 静态文件动态绑定

    1. {% load static %}
    2. <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
    3. <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
  7. 更改form表单的数据提交方式 post

  8. 前期朝后端提交post请求出现403情况,需要去settings文件中注册一行数据

    1. MIDDLEWARE
    2. 中间件
    3. MIDDLEWARE = [
    4. 'django.middleware.security.SecurityMiddleware',
    5. 'django.contrib.sessions.middleware.SessionMiddleware',
    6. 'django.middleware.common.CommonMiddleware',
    7. # 'django.middleware.csrf.CsrfViewMiddleware',
    8. 'django.contrib.auth.middleware.AuthenticationMiddleware',
    9. 'django.contrib.messages.middleware.MessageMiddleware',
    10. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    11. ]
  9. .method方法获取请求方式(大写POST或GET)

  10. 配置mysql的连接django方式

    1. settingsDATABASES中添加连接端口
    2. 'ENGINE': 'django.db.backends.mysql',更改
    3. DATABASES = {
    4. 'default': {
    5. 'ENGINE': 'django.db.backends.mysql',
    6. 'NAME': 'day50', # 指定库的名字
    7. 'USER':'root', # 注意键全大写
    8. 'PASSWORD':'',
    9. 'HOST':'127.0.0.1',
    10. 'PORT':3306,
    11. 'CHARSET':'utf8'
    12. }
    13. }

    更改连接库

    1. 在项目名中的__init__中添加
    2. 应用名中的__init__中添加
    3. import pymysql
    4. pymysql.install_as_MySQLdb()
  11. 数据库迁移指令

    1. python manage.py makemigrations # 记录操作
    2. python manage.py migrate # 操作保存
  12. 只要修改了models里与数据库子弹相关的代码,就必须重新执行两个命令

  13. charField字段 必须指定max_length参数

  14. 新增字段需要设置默认值

    1. 代码中设置default =
    2. 使默认值为空 null = true
    3. 报错后选1输入默认值

1122 django中orm操作的更多相关文章

  1. Django中ORM操作

    ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...

  2. Django中ORM操作提升性能

    提升orm操作性能注意的点 优化一:尽量不查对象,能用values就是用values 直接使用对象查询的结果是5条sql语句 def youhua(request): # 使用对象查 obj_list ...

  3. 6月20日 Django中ORM介绍和字段、字段参数、相关操作

    一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...

  4. Django中ORM介绍和字段及其参数

    ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  5. Django之ORM操作

    Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...

  6. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  7. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  8. django中orm使用的注意事项

    必备小知识点 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者 ...

  9. Django之ORM操作(***)

    Django之ORM操作(***) http请求的流程: url--> 视图view(模板+数据库) --> ORM的功能: 可以转换SQL语句,并做操作. ORM操作数据表: -创建表: ...

随机推荐

  1. hdoj1247(字典树)

    题目链接:https://vjudge.net/problem/HDU-1247 题意:给定n个字符串(n<=50000),判断其中哪些字符串恰能由另外两个不同的字符串连接而成. 思路: 暴力字 ...

  2. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  3. ES-IK分词器

    一.安装 https://www.cnblogs.com/wudequn/p/11001382.html https://github.com/medcl/elasticsearch-analysis ...

  4. STL源码剖析——iterators与trait编程#2 Traits编程技法

    在算法中运用迭代器时,很可能用到其相应类型.什么是相应类型?迭代器所指对象的类型便是其中一个.我曾有一个错误的理解,那就是认为相应类型就是迭代器所指对象的类型,其实不然,相应类型是一个大的类别,迭代器 ...

  5. Windows10下Anaconda+Tensorflow+Keras环境配置

    注意!注意!!注意!!! (重要的事情说三遍) 安装前检查: 1.Tensorflow不支持Anaconda2,Tensorflow也不支持python2.7和python3.7(满满的辛酸泪!) 2 ...

  6. 创建 Python Virtualenv 虚拟隔离环境

    video:创建 Python Virtualenv 虚拟隔离环境 python 虚拟环境 venv 简单用法 - littlemore - 博客园 创建 Python Virtualenv 虚拟隔离 ...

  7. [Done] Codeforces Round #562 (Div. 2) 题解

    A - Circle Metro 模拟几百步就可以了. B - Pairs 爆搜一下,时间复杂度大概是 $O(4 * n)$ Code: 56306723 C - Increasing by Modu ...

  8. Codeforces Round #563 Div. 2

    A:显然排序即可. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 100000 ...

  9. Tomcat HTTP connector和AJP connector

    Tomcat服务器通过Connector连接器组件与客户程序建立连接,“连接器”表示接收请求并返回响应的端点.即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户. ...

  10. 怎样在python中写注释

    python中的注释是以井号: # 开头, 一般会在#后加一个空格. # This is a comment print("Hello, World!") 多行注释的语法是三引号: ...