静态文件配置

  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. 0818NOIP模拟测试赛后总结

    又挂了…… 120 rank19. 第一次两个机房考不同的题目.一开始并不知道应该做哪套题目. 不明真相的吃瓜群众决定先点开B套.通读三道题,只是觉得T2好水.似乎是红题难度吧……(后来证明是我读错题 ...

  2. IDEA Error:java: Compilation failed: internal java compiler error 解决方案

    这是由于版本不一致导致的 file => settings => 搜索找到Java Compiler 把相应jdk版本改成1.8 ctrl+alt+s

  3. duilib教程之duilib入门简明教程4.响应按钮事件

    上一个Hello World的教程里有一句代码是这样的:CControlUI *pWnd = new CButtonUI;    也就是说,其实那整块绿色背景区域都是按钮的区域.(这里简要介绍下,CC ...

  4. SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  5. PAT甲级——A1090 Highest Price in Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  6. reac-native + typescript 的环境搭建

    一. RN-TS环境搭建 . 安装RN脚手架 yarn add create-react-native-app -g yarn global add typescript . 创建项目文件夹 crea ...

  7. MFC编译Freetype2.3.7

    从http://www.freetype.org下载源代码. FreeType2库源码包中包含多种环境与编译器下的make文件,其中还包含vc的项目文件. 我用的是VC,所以首先找到VC环境的项目文件 ...

  8. 转载:Linux 安装Java

    1.到官网下载 jdk-8u131-linux-x64.tar.gz 官网地址:http://www.Oracle.com/technetwork/java/javase/downloads/jdk8 ...

  9. redies安装

    第一步下载redies 下载地址:https://github.com/microsoftarchive/redis/releases 第二步修改文件夹名为redies 第三步运行redies 打开一 ...

  10. 浪潮云+/云加 App 智能化的企业移动办公平台官网下载地址

    上Google?Facebook? 点这里: 手机端:https://ecm.inspur.com/ 桌面端:https://ecm.inspuronline.com/