Django静态文件配置、form表单、request对象、连接数据库、ORM

静态文件配置

  1. 编写一个用户登入页面

  2. 静态文件:不怎么经常变化的文件 主要针对html文件所使用的到的各种资源

    有:CSS文件、JS文件、img文件、第三方框架文件

django针对静态文件资源需要单独开始一个目录统一存放

static目录

该目录下如果各种类型的文件都多 还可以继续创建目录
如:
	CSS目录
    js目录
    img目录
    utils目录/plugins目录/libs目录/others目录/不创
  1. 资源访问:我们在地址栏中之所以可以输入路由获取到相应的资源是因为程序员提前开设了资源的接口

  2. 静态文件资源访问:默认情况下是无法访问的 因为我们没有提前开设静态文件资源管理的访问接口

静态文件相关配置

本地手动配置的Bootstrap静态资源是无法加载 因为本地去没有配置

image

去setings.py中添加STATICFILES_DIRS = [os.path.join(BASE_BIR, 'static')]

1.接口前缀

image

STATIC_URL = '/xxx/'  # 访问静态文件资源的接口前缀(通行证)
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),  # 存储静态文件资源的目录名称
    os.path.join(BASE_DIR, 'static1'),  # 存储静态文件资源的目录名称
    os.path.join(BASE_DIR, 'static2'),  # 存储静态文件资源的目录名称
]

接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下的查找 一旦找到就返回(前缀对了才有资格访问静态目录下的资源 谁先就是谁 类似于环境变量的查找顺序)

image

浏览器停用缓存

(浏览器会自动检测到已经请求过的页面 就不会请求加载了 用的就是缓存)

image

2.接口前缀动态匹配

当要自定义接口前缀的时候

{% load static %}  # Django提供的模板语法
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

动态匹配了自定义接口前缀的通行证 就不用考虑接口是否来回的变化

image

form表单

action 控制数据提交的地址

1. action=''	数据默认提交给当前所在的地址
2. action='https://www.baidu.com/'	完整地址
3. action="/index/"	等价于127.0.0.1:8000/index 朝当前服务端的index地址提交

method 控制数据提交的方法

默认是get(索要获取到数据) 可以改post(提交数据)

ps: 注意标签中name要有属性 否则无法提交数据的

请求方法补充

get: 朝服务端索要数据 也可以携带一些额外的要求

携带额外数据的方式:URL?xxx=yyy&uuu=zzz
问号后面携带数据的大小是有限制(2KB)的并且不能携带敏感数据

都是些明文数据用户和密码

image

get索要数据URL ?号后面跟的额外限制条件

image

post 朝服务端提交数据的方式

携带额外数据的方式:请求体(请求体携带数据安全性较高并且没有大小限制)

method修改成post提交报错 403访问权限不够

image

前期发送post请求需要注释掉settings.py配置文件中的某一行

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',
]

image

在输入用户名与密码就不会有显示这些用户相关的敏感信息了

image

request对象

request.method	获取请求方式 结果是纯大写的字符串数据
	GET\POST

request.POST

获取post请求请求体里面携带的数据

request.POST.get()		获取列表最后一个数据值
request.POST.getlist()	 获取整个列表数据

image

request.GET

获取网址问号后面携带的数据

request.GET.get()		获取列表最后一个数据值
request.GET.getlist()	 获取整个列表数据

在视图函数中针对不同的请求代码编写套路

image

if request.method == 'POST':
    return HttpResponse()
return HttpResponse()

image

pycharm连接数据库

1.pycharm初次连接数据库 需要下载对于的驱动

image

2.参考截图操作即可

image

不行就更换驱动

image
操作鼠标点点
image

django连接数据库

django自带的sqlite3是一个小型的数据库 功能比较少 主要用于本地测试

默认配置的sqlite3
我们实际项目中都会替换掉它
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

1.修改配置文件

DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'day51',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123',
            'CHARSET': 'utf8'
        }
}

启动会报错 需要指定模板

image
)

2.指定模块

	django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码
    	import pymysql
    	pymysql.install_as_MySQLdb()

image

django2.X及以上都可以直接通过下载mysqlclient模块解决

	pip3.8 install mysqlclient
ps:该模块windows下载问题不大 主要是mac电脑可能有问题

mac报错解决方案:

image

点击报错到对应行数
image

ORM简介

ORM:关系对象映射

能够让不会SQL语句的python程序员 使用python面向对象的语法来操作数据库

类					表
对象					一条条数据
对象点名字			 数据获取字段对应的值

ORM由于高度封装了SQL 所以有时候效率较低 我们需要自己写SQL

ORM基本操作

1.先在models.py中编写模型类

class GirlsInfo(models.Model):
        # 字段名 = 字段类型 + 约束条件
        id = models.AutoField(primary_key=True)  
        name = models.CharField(max_length=32)
        age = models.IntegerField()

image

2.执行数据路迁移相关命令

	python38 manage.py makemigrations  将操作记录到小本本上(migrations)
	python38 manage.py migrate		  将操作同步到数据库上
 '''注意每次在models.py修改了与数据库相关的代码 都需要再次执行上述命令'''

image

image

ORM基本语句

from app01 import models
models.类名.objects.create()
models.类名.objects.filter()
models.类名.objects.update()
models.类名.objects.delete()

image

posted @   小福福  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
  1. 1 原来你也在这儿 温余福
  2. 2 世间美好和你环环扣扣 温余福
  3. 3 随风起舞 温余福
  4. 4 罪恶都市 温余福
罪恶都市 - 温余福
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 王星

作曲 : 灰鸿啊/皮皮

编曲 : 夏日入侵企画

制作人 : 邢硕

节奏吉他 : 肯尼

主音吉他 : 张伟楠

贝斯 : 皮皮

鼓 : 海鑫

和声 : 邢硕

音效制作 : 邢硕

录音 : 邢硕/夏国兴

混音 : 于昊

特别鸣谢 : 张伟楠

这城市的车流和这地表的颤抖

像一颗石子落入地心之后泛起的温柔

暗涌

河水流过转角她的楼

被梦魇

轻声呓语唤醒身后的幼兽

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都

已忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去陈旧的还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池已失守

最终无法占有

无眠辗转

伴着人间破碎的旧梦

像繁星

退却后只剩下混沌的夜空

炙热

掩盖风声鹤唳的担忧

把所有失落无助反手推入

无尽的白昼

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都已经忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池早已失守

惶恐难以接受

缠绵往复不肯放手

最终无法占有

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁 灭 即 拯 救

谁掠夺春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

明知城池已失守

缠绵往复不肯放手

最终无法占有

点击右上角即可分享
微信分享提示