一、静态文件配置

1. 什么是静态文件

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

只要是变量是写死的,是不可以动态改变的,那这个文件就是静态文件。

2. 静态文件的用法

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

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

  3. 在static文件夹内部还会再建其他文件夹,为了更加方便的管理文件。

    css   文件夹
    js 文件夹
    font 文件夹
    img 文件夹
    Bootstrap
    fontawesome
  4. django中,需要你自己手动创建静态文件存放的文件夹

    # settings 文件中配置 在最后
    
    STATIC_URL = '/static/'  # 访问静态文件资源接口前缀,通常情况下接口前缀的名字也叫static,你也可以设置成任意喜欢的,这其实只是一个地址的后缀而已。
    
    # 手动开设静态文件访问资源,静态资源所在的文件夹路径
    STATICFILES_DIRS = [
    # 将static文件里面所有的资源暴露给用户
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    # os.path.join(BASE_DIR,'static2'),
    ]
  5. 最后在HTML中可以导入static中的css等静态文件。

    <link href="../static/文件夹/文件名" rel="stylesheet"

3. 静态文件的动态绑定

如果在实际需求中,需要修改settings中的STATIC_URL的值,那这个时候,所有导入静态文件的文件都需要修改路径了。如果你有很多HTML文件,是不是要一个一个得修改css和js文件的路径?这样岂不是很麻烦?

Django也帮我们做了优化。我们可以在导入静态文件时,使用Django中的模板语言,将STATIC_URL路径动态加载到导入静态文件的路径。这样,不管你STATIC_URL变成了什么值,我都可以通过STATIC_URL这个变量名本身来取它相对应的值了。

也就是说,我不需要知道你变成什么样子,我只要用STATIC_URL这个变量名就好了。

{% load static %}   {# 这里的load就相当于python中的import,而static就是一个模块,这个模块就可以将STATIC_URL导入过来,获取其实时的动态变化的值 #}
<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>

二、请求方式与相应

1. get请求

(from表单默认是get请求)

http://localhost:8000/login/?username=tbw&password=qwe

  • get 请求也能携带参数
  • 特点:url?xxx=xxx&yyy=yyy
    1. 携带的数据不安全
    2. 携带的数据大小有限制
    3. 通常只会携带一些不是很重要的数据

2. post请求

前期我们在朝后端提交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',
]

3. Django后端视图函数处理请求

自定义login接口:

if request.method == 'POST':
print('接收到POST请求!')
print('接收到前端期缴的数据为:',request.POST)
username = request.POST.get('username')
password = request.POST.get('password') # # 默认取出post字典value列表的最后一个元素
# print(username,type(username))
# print(password,type(password)) return HttpResponse('后端已收到!') # if request.method == 'GET':
print('接收到GET请求!')
return render(request, 'login.html')

三、request方法初识

  1. request.method:获取请求方式,并且是纯大写的字符串

  2. request.POST:获取用户提交的post请求数据

    当前端朝后端提交数据的时候,会朝当前页面对应的借口提交数据。

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

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

四、Django连接数据库

有两部步操作

注意!

  1. 之后在写django项目的时候 一个django就对应一个数据库
  2. 不要出现多个项目使用同一个数据的情况!!

1. 设置Django默认连接MySQL数据库

在settings中声明连接的是mysql数据库,而不是默认的sqlite3数据库。

# sttings

# 将默认的数据库连接注释掉或者直接修改
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# } DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day50',
'USER':'root',
'PASSWORD':'123',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}

2. 设置Django使用pymysql模块连接

告诉django不要用默认的mysqldb模块连接mysql,而是要用pymysql。

你可以在项目名下的__init__.py中书写,也可以在应用名下的__init__.py中书写声明。

import pymysql
pymysql.install_as_MySQLdb()
# 两句话就可以了

五、Django orm简介

1. orm介绍

orm:对象关系映射

类----------->表

对象--------->数据

对象点属性---->字段对应的值

2. orm的优缺点

优点:能够让不会数据库操作的人也能够简单方便去操作数据库。

缺点:封装程度太高,有时候会出现查询效率偏低的问题

  • 所以在工作中,简单的数据库用orm操作。
  • 复杂的,追求速度,就需要你手动书写sql语句来操作mysql。

3. Django操作orm

书写模型类

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

六、数据迁移(同步)

python3 manage.py makemigrations  # 将数据库的修改 记录到一个“即将执行的操作记录本”上(migrations文件内),待会会一起执行这个小本本里面的操作。
python3 manage.py migrate # 将修改操作真正的同步到数据库中

通过这两条命令创建的表会自动在表名前加一个app名的前缀,用以区分不同的app表。

七、模型表相关操作

1. 模型表字段的查增改删

  1. 字段的修改

    直接修改代码 然后执行数据库迁移命令即可(两条一条不能少)

  • 方式1 设置默认值

    email = models.EmailField(default='123@qq.com') # varchar

  • 方式2 允许字段为空

    phone = models.BigIntegerField(null=True)

  • 方式3 直接在提示中给默认值

    gender = models.CharField(max_length=32)

  1. 字段的删除

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

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

2.1 查

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

2.2 增

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

2.3 改

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

2.4 删(一般情况下不用)

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

Django简单的使用及一些基础方法的更多相关文章

  1. Django简单快速实现PUT、DELETE方法

    使用django的小伙伴们应该都知道我们是无法开心的处理PUT跟DELETE的 $.ajax({ url: 'XXX', type: 'PUT', dataType: 'json', data: { ...

  2. 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作

    在 Django 中构建 Oracle 数据库支持的 Web 应用程序 了解如何配置 Django 以便与 Oracle 数据库交互,并使用 ORM 进行数据库连接.             产能在软 ...

  3. Django 模型中自定义Manager和模型方法

    1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个m ...

  4. DJango简单的后台定义登录验证

    第一步创建一个新的项目 APPLICATIONNAME : 表示创建子项目 第二步:找到主项目的url 进行 include 分发式url 简单的说,就是将app里边的url放在这里. 这里也可以找到 ...

  5. 实现同时提交多个form(基础方法) 收集

    实现同时提交多个form(基础方法) 收集 分类: 1.2-JSP 1.3-J2EE 1.1J2se 1.0-Java相关2011-12-01 20:59 1644人阅读 评论(0) 收藏 举报 bu ...

  6. django 简单会议室预约(4)

    基本的配置已经完成了,来看看最重要的views.py 先看看简单的注册登录功能,在django里有一个专门的模块用来验证用户信息 :所以只需要调用就好了: #-*-coding:utf-8 -*- f ...

  7. Django 自定义模型管理器(Manager)及方法

    转载自:https://www.cnblogs.com/sui776265233/p/11571418.html 1.自定义管理器(Manager) 在语句Book.objects.all()中,ob ...

  8. 数据结构和算法(Golang实现)(4)简单入门Golang-结构体和方法

    结构体和方法 一.值,指针和引用 我们现在有一段程序: package main import "fmt" func main() { // a,b 是一个值 a := 5 b : ...

  9. php使用curl简单抓取远程url的方法

    这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php使用curl抓取远程url的方法.分 ...

随机推荐

  1. maven基础学习-为什么要用maven,帮助解决了什么问题,怎么解决的,希望以后学习每个知识点都可以这样问下自己

    maven基础学习 第1章 Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Mave ...

  2. 爬虫入门到放弃系列02:html网页如何解析

    前言 上一篇文章讲了爬虫的概念,本篇文章主要来讲述一下如何来解析爬虫请求的网页内容. 一个简单的爬虫程序主要分为两个部分,请求部分和解析部分.请求部分基本一行代码就可以搞定,所以主要来讲述一下解析部分 ...

  3. Eureka详解系列(三)--探索Eureka强大的配置体系

    简介 通过前面的两篇博客,我们知道了:什么是 Eureka?为什么使用 Eureka?如何适用 Eureka?今天,我们开始来研究 Eureka 的源码,先从配置部分的源码开始看,其他部分后面再补充. ...

  4. hdu 4738 Caocao's Bridges(割边)

    题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...

  5. 【uva 10048】Audiophobia(图论--Floyd算法)

    题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...

  6. POJ 2195 & HDU 1533 Going Home(最小费用最大流)

    这就是一道最小费用最大流问题 最大流就体现到每一个'm'都能找到一个'H',但是要在这个基础上面加一个费用,按照题意费用就是(横坐标之差的绝对值加上纵坐标之差的绝对值) 然后最小费用最大流模板就是再用 ...

  7. Base64 编码原理

    什么是 Base64 编码 Base64 编码是最常见的编码方式,基于 64 个可打印字符来表示任意二进制数据的方法,是从二进制转换到可见字符的过程. 使用场景 数据加密或签名通过 Base64 转换 ...

  8. Pod 实现机制

    Pod 为了亲密性应用而存在: 两个应用需要通过 127.0.0.1 或者 Socket 通信: 两个应用之间发生文件交互: 两个应用发生频繁的调用 共享网络 Pod 中的所有容器拥有同一个 IP 地 ...

  9. LINUX - 寄存器和堆栈

    堆栈模型: 函数调用: EBP:ESP EBP当前调用函数的栈底: ESP当前调用函数的栈顶: ---------------------------------------------------- ...

  10. 在QT C++中调用 Python并将软件打包发布(裸机可运行)

    为了提高工作效率,需要一个可以自动生成多份相关联的word文档免去繁琐复制粘贴工作的软件.最后选定使用QT C++做界面和主要逻辑程序设计,对word的操作使用python写好对应的函数,然后在QT中 ...