静态文件配置

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

  2. 什么是静态文件

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

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

    通常情况下,在static文件夹内部还会再建其他的文件夹

    css    文件夹
    js 文件夹
    font 文件夹
    img 文件夹
    Bootstrap
    fontawesome

    为了更加方便的管理文件,django中需要你自己手动创建静态文件夹存放的文件夹

    在settings中STATIC_URL = '/static/' '/static/'动静态文件资源接口的前缀,通常情况下接口的前缀的名字也叫static。也可以手动设置静态文件的访问资源

    STATIC_URL = '/static/'  #访问静态文件资源接口前缀  通常情况下接口前缀的名字也叫static,手动配置静态文件的访问资源
    STATICFILES_DIRS = [ # 静态资源所在的文件夹路径
    os.path.join(BASE_DIR,'static'), # 将static文件里面所有的资源暴露给用户
    os.path.join(BASE_DIR,'static1'), # 将static文件里面所有的资源暴露给用户,行末的逗号不能漏掉
    ]
    这样可以在templates中导入static目录下的静态文件了
    例如:<script src="/static/jquery-1.12.4.js"></script>
  4. 静态文件动态绑定

{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>

form表单默认是get请求

get请求能够携带参数

http://127.0.0.1:8000/login/?username=jason&password=jason123

问号后面的就是携带的参数

特点:url?xxx=xxx&yyy=yyy

  1. 携带的数据是不安全的

  2. 携带的数据通常是一些不重要的

  3. 携带的数据大小有限制的

    get请求,http规范对URL长度是没有限制的,只是不同的浏览器做了限制。比如:在IE:2083字节,其他浏览器支持的字节,都比IE高

    简单点,我们可以理解为:get请求,URL长度不要超过,2kb就好

​ post请求,也没有长度的限制,限制它的是服务器的处理能力,与存储大小。还有就是web容器的限制,比如tomcat默认的是2mb

action

  1. 不写,默认是朝当前的地址提交数据的
  2. 只写后缀,如:/index
  3. 写全路径https://www.baidu.com

前期我们在朝后端发送提交post请求的时候,出现403的情况

需要去配置文件中注释一行内容

# 中间件
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',
]

django后端的视图函数 默认处理的是get请求

无论是发送get请求还是post请求 都会执行视图函数

def login(request):
print('来啦 老弟~')
return render(request,'login.html')

get请求指向拿到的login页面

post请求想提交数据 然后后端做校验

如何判断当前请求方式

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

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

request方法的初识

request.method   获取请求的方式   大写字符串

request.POST   获取用户提交的post请求数据
如何获取用户数据
request.POST.get() 默认的指挥获取列表最后一个元素
request.POST.getlist() 如果你想获取列表 用getlist() request.GET 获取用户提交的get请求的数据
如何获取用户的数据
request.GET.get() 默认只会获取列表中的最后一个元素
request.GET.getlist() 如果你想获取列表 用getlsit()

pycharm 连接数据库

django连接MySQL

必须要有两步操作

  1. 配置文件配置

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql', # 指定数据库类型
    'NAME': 'day49', # 指定库的名字
    'USER':'root', # 注意 键必须是全大写
    'PASSWORD':'123qwe',
    'HOST':'127.0.0.1',
    'PORT':3306,
    'CHARSET':'utf8'
    }
    }
  2. 主动告诉django不要用默认的MySQLdb 连接 而是用pymysql

你可以在项目名下的__init__.py文件中书写

也可以在应用名下的__init__.py文件中书写

import pymysql

pymysql.install_as_mysqldb()

为什么用orm

能够让不会使用数据库操作的人也能够简单的去操作数据库

orm的缺点

封装的程度太高 有时候出现查询的效率会降低

所以在简单地工作中

复杂的 追求速度 还是需要自己写sql语句

django中如何操作orm

书写模型类

去应用下的models中 书写模型类(就是类)

之后在写django项目的时候,一个django就对应一个数据库

数据库的迁移命令

python3 manage.py makemigrations 将数据库修改 记录到(migrations文件内)

python3 manage.py migrate 将修改操作的真正的数据同步到数据库中

这两条语句必须都要执行

只要修改了models中的数据跟数据库中的代码相关的数据,你就必须重新执行上面的代码

模型表字段的增删该查

字段的修改

直接修改代码 然后执行数据库迁移命令即可(两条命令必须都要执行)

 # 方式1  设置默认值
email = models.EmailField(default='123@qq.com') # varchar
# 方式2 允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender = models.CharField(max_length=32)
# 方式3 在提示框中,提示什么信息,根据提示的信息,直接在命令框中添加条件 字段的删除
直接注释掉对应需要的字段就行了 然后再执行数据库迁移命令即可(谨慎使用)

模型表数据的增删改查

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

user_obj = models.User.objects.create(username=username,password=password)
print(user_obj,user_obj.username,user_obj.password)
create方法会有一个返回值 返回值就是当前被创建的对象本身

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

删(谨慎使用)

models.User.object.filter(id=delete_id).delete()
批量操纵 会将filter查询出来的列表中所有的对象全部删除

day 52的更多相关文章

  1. com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0

    这是由于JDK版本不一致造成的,指的是高版本的JDK编译的class不能放在低版本的JDK上运行. Version 52,表示JDK8编译的class不能运行在JDK7上,所以需要在本地安装JDK8.

  2. 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]

    [本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...

  3. NXP恩智浦P87C51/52/54/58/591芯片解密单片机破解多少钱?

    NXP恩智浦P87C51/52/54/58/591芯片解密单片机破解 芯片解密型号: P87C51x2.P87C52x2.P87C54x2.P87C58x2.P87C591  单片机解密 #####[ ...

  4. Java 用LinkdeList实现52张扑克牌

    用LinkdeList实现52张扑克牌(不含大小王)的洗牌功能.提示:花色 ,和数字分别用数组存储. import java.util.LinkedList; import java.util.Ran ...

  5. Unsupported major.minor version 52.0问题的解决

    下载Tomcat9.0,解压后安装运行,结果启动失败,进入logs文件夹看里面的日志文件,提示是Unsupported major.minor version 52.0错误,这是因为Tomcat版本过 ...

  6. CH Round #52 还教室[线段树 方差]

    还教室 CH Round #52 - Thinking Bear #1 (NOIP模拟赛) [引子]还记得 NOIP 2012 提高组 Day2 中的借教室吗?时光飞逝,光阴荏苒,两年过去了,曾经借教 ...

  7. effective OC2.0 52阅读笔记(七 系统框架)

    47 熟悉系统框架 总结:将代码封装为动态库,并提供接口的头文件,就是框架.平时的三方应用都用静态库(因为iOS应用程序不允许在其中包含动态库),并不是真正的框架,然而也经常视为框架.例如:NSLin ...

  8. Android studio 出现 Unsupported major.minor version 52.0

    参考资料:http://blog.csdn.net/fakine/article/details/51241202 最近更新了Android studio 之后,出现了Error:java.lang. ...

  9. Total Commander 8.52 Beta 1

    Total Commander 8.52 Beta 1http://www.ghisler.com/852_b1.php 10.08.15 Release Total Commander 8.52 b ...

  10. Ant编译提示“Unsupported major.minor version 52.0”

    今天在使用Ant编译build.xml文件时报错"java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main : Unsu ...

随机推荐

  1. 廖雪峰Java12maven基础-1maven入门-2依赖管理

    maven 如果我们的项目依赖第三方的jar包: Commons Logging发布的jar包在那里下载? 使用Log4j需要哪些jar包 其他依赖:junit,Javamail,MySQL驱动... ...

  2. Eureka服务治理学习笔记(摘抄)

    1.简介 EureKa在Spring Cloud全家桶中担任着服务的注册与发现的落地实现.Netflix在设计EureKa时遵循着AP原则,它基于R EST的服务,用于定位服务,以实现云端中间层服务发 ...

  3. Python3.6爬虫+Djiago2.0+Mysql --运行djiago环境

    1.安装djiago 模块 pip install Django  --默认安装最新的  安装完成以后可以python -m pip list 查看模块是否安装 2.创建项目及app 及生成目录 备注 ...

  4. CAS客户端配置

    1. 导出证书 以上操作会在当前目录产生文件:ssodemo.crt(需要用到的文件请看CAS服务端配置那篇文章) 2. 客户端导入证书 以上操作会在jdk安装目录jre\lib\security下产 ...

  5. Python基础——使用with结构打开多个文件

    考虑如下的案例: 同时打开三个文件,文件行数一样,要求实现每个文件依次读取一行,然后输出,我们先来看比较容易想到的写法: with open(filename1, 'rb') as fp1: with ...

  6. [JSOI2010]连通数 (dfs或tarjan或bitset)+bitset学习

    题目描述 输入格式 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. 输出格式 输出一行一个整数,表示该图的连通数. 样例 样 ...

  7. MyBatis配置文件(七)--environments运行环境

    一.environments配置信息: environments的作用是用来配置数据库信息,可以配置多个,其有两个可配的子元素,分别是:事务管理器transactionManager和数据源dataS ...

  8. Django项目: 项目环境搭建 ---- 一、创建django项目

    项目环境搭建 一.创建django项目 1.创建python虚拟环境 在虚拟机上创建python虚拟环境,因为实际项目部署,实在linux mkvirtualenv -p /usr/bin/pytho ...

  9. Java程序员面试题收集(3)

    面试中被问到过的题目: 1.<%@ include=""/>和<jsp:include page="" flush="true&qu ...

  10. Leetcode113. Path Sum II路径总和2

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 ...