静态文件配置

  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. alias用于设置当前数据表的别名,

    alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等. 示例: $Model = M('User'); $Model->alias('a')->join('__DE ...

  2. Django之ORM查询优化

    目录 only 和 defer select_related 和 prefetch_related ORM字段参数 choices res = models.Book.objects.all() # ...

  3. ip地址分类和子网掩码学习笔记

    关于ip的一些学习心得 ip的概念其实很好理解,也很形象,就像一个门牌号一样,让人困惑的其实不是ip的概念本身,而是在日常计算机网络使用中,碰到很多有特殊意义的ip地址,例如,127.0.0.1,19 ...

  4. jeecms v9库内新增对象的流程及其他技巧

    cms 开发 ———— 库内新增对象 Products 的流程说明及其他技巧 第一步:Entity com.jeecms.cms.entity.assist.base下建立模型基础类BaseCmsPr ...

  5. rocketmq 延时消息

    rocketmq  的延时消息不能支持任意延时,她定义了18 个延时等级,并且我们可以指定这18 个延时等级的延时时间. 发送消息的时候只需在消息中指定 当前消息的 延时等级即可,并且这个延时消息不是 ...

  6. 表单单选按钮input[type="radio"]

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  7. Spring MVC(九)--控制器接受对象列表参数

    前一篇文章介绍是传递一个参数列表,列表中的元素为基本类型,其实有时候需要传递多个同一类型的对象,测试也可以使用列表,只是列表中的元素为对象类型. 我模拟的场景是:通过页面按钮触发传递参数的请求,为了简 ...

  8. PAT甲级——A1078 Hashing

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

  9. Python学习day05 - Python基础(3) 格式化输出和基本运算符

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  10. Neo4j 第四篇:使用.NET驱动访问Neo4j

    本文使用的IDE是Visual Studio 2015 ,驱动程序是Neo4j官方的最新版本:Neo4j.Driver,创建的类库工程(Project)要求安装 .NET Framework 4.5. ...