静态文件配置

  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. HTML - 文本标签相关

    <html> <head></head> <body> <!-- 标题标签 : h1到h6, 文字大小依次变小, 加粗显示, 自带换行 标签中的部 ...

  2. maven/gradle版本统一示例

    <dependencyManagement> <dependencies> <dependency> <groupId>org.springframew ...

  3. thinkphp 命名范围

    在应用开发过程中,使用最多的操作还是数据查询操作,凭借ThinkPHP的连贯操作的特性,可以使得查询操作变得更优雅和清晰,命名范围功能则是给模型操作定义了一系列的封装,让你更方便的操作数据. 命名范围 ...

  4. Python-网络编程之粘包、UDP

    目录 粘包问题 subprocess模块 struct模块 UDP协议编程 简易qq聊天室 粘包问题 什么是粘包问题呢? 在我们写 tcp socket编程的时候,tcp协议是一个流式的协议,服务端第 ...

  5. 杂项-公司:SAMSUNG

    ylbtech-杂项-公司:SAMSUNG 三星集团是韩国最大的跨国企业集团,同时也是上市企业全球500强,三星集团包括众多的国际下属企业,旗下子公司有:三星电子.三星物产.三星航空.三星人寿保险等, ...

  6. Django项目: 4.用户登录登出功能

    用户登录登出功能 一.功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面 登录功能 退出功能 二.登录页面 1. 接口设计 接口说明 类目 说明 请求方法 GET url定义 /user/l ...

  7. 【51nod 1874】 奇怪的数学题

    题目 求 \[\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j)^k\] 首先这个次大公约数显然就是\(gcd\)除一下最小质因子了 于是 \[\sum_{i=1}^n\sum_{j= ...

  8. python-web-习题

    1.简单描述 webbrowser.requests.BeautifulSoup 和 selenium 模块之间的不同 webbrowser模块有一个 open() 方法,它启动 web 浏览器,打开 ...

  9. PKUOJ 区间内的真素数

    http://bailian.openjudge.cn/tm2018/A/ #include <iostream> #include <math.h> #include < ...

  10. 第一次个人项目【词频统计】——测试样例分析&性能分析

    [空文件测试](认为空文件行数为0) [基本测试] [大小写测试] 可以看出abcd同类型的词出现了三次,而单词树中存储的是ABCd,满足大小写要求. [复杂文件测试] 前三项数据比较接近,但是单词和 ...