Django高级扩展之静态文件和ajax使用

news2024/11/15 13:24:31

目录

使用静态文件

创建静态文件目录

Settings.py配置

创建css文件

路由与视图

设置路由

视图

模板使用静态文件

调用css

调用js

调用图片

优化路径

加载标签

修改文件路径

修改图片路径

修改js路径

修改css路径

使用Ajax

应用场景

示例

路由

视图

模板

Javascript

总结


使用静态文件

css、js、图片、json文件、字体文件等

创建静态文件目录

一般在project下创建static文件夹。

在创建一个对应项目的myapp文件夹。

myapp中创建css、js、img文件夹。

如图:

Settings.py配置

静态目录设置在工程目录下settings.py中,

修改STATIC_URL配置。

默认情况下是static,这个文件夹就是用来存放静态文件的。

Django会在应用程序根目录下查找static文件夹。

如图:

在STATIC_URL下增加STATICFILES_DIRS配置,

内容如下:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

 

 

创建css文件

在static/myapp/css下创建style.css

设置h1标签字体颜色

* {
    margin: 0;
    padding:0;
}

h1 {
    color:red;
}

 

路由与视图

设置路由

# 静态调用

path('static_show', views.static_show, name='static_show'),

视图

在视图中设置显示模板

def static_show(request):
    """ 静态调用 """

    return render(request, 'myapp/show.html')

模板使用静态文件

调用css

在工程目录projects/templates/myapp/下创建模板测试调用css效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <link rel="stylesheet" href="/static/myapp/style.css">
</head>
<body>
    <h1>我是标题 我最帅</h1>
</body>
</html>

调用js

添加jquery.js放入js目录

模板引入

<script src="/static/myapp/js/jquery.js"></script>

<script>

    $(function() {

        alert('我是弹窗')

    })

</script>

自己创建的js文件也是一样放置和引入。

效果:

 

调用图片

找一张图片放入static/myapp/img目录中。

在模板中使用图片,如下:

<body>
    <h1>我是标题 我最帅</h1>
    <img src="/static/myapp/img/1.jpg" alt="">
</body>

优化路径

加载标签

使用一开始在settings.py中路径设置,首先需要加载static标签。

在模板最顶部添加以下代码:

{% load static %}

修改文件路径

静态文件调用的路径也需要修改,不在使用硬编码路径。

{% static %}标签用于生成静态文件的绝对路径。

修改图片路径

<body>
    <h1>我是标题 我最帅</h1>
    <img src="/static/myapp/img/1.jpg" alt="">
    <img src="{% static 'myapp/img/1.jpg' %}" alt="">
</body>

修改js路径

<script src="{% static 'myapp/js/jquery.js' %}"></script>

修改css路径

<link rel="stylesheet" href="{% static 'myapp/css/style.css' %}">

主要解决如果静态文件路径改变后链接访问不到的问题。

注意:

img使用STATIC配置路径

js/css使用STATICFILE_DIR配置路径

如果暂时隐藏路径尝试配置效果,可能因浏览器缓存,出现误差效果。

使用Ajax

应用场景

需要动态生成,请求json数据。

示例

接下来将通过设置路由、视图和模型来进行具体使用的示例演示。

路由

# 使用ajax
path('ajax_show', views.ajax_show, name='ajax_show'),
path('ajax_use', views.ajax_use, name='ajax_use'),

视图

第一个视图方法显示模板页面;第二个方法接收到请求后,查询所有班级信息处理组装好数据后,调用jsonResponse处理数据为json并响应。

def ajax_show(request):

    render(request, 'myapp/show.html')


from django.http import JsonResponse
def ajax_use(request):

    gradess = Grades.objects.all()
    list = []
    for g in gradess:
        list.append([g.name, g.boy_num, g.girl_num])

    return JsonResponse({'list': list})

模板

显示模板,并在模板中设置按钮激活ajax请求后端接口

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <link rel="stylesheet" href="{% static 'myapp/css/style.css' %}">
    <script src="{% static 'myapp/js/jquery.js' %}"></script>
    <script src="{% static 'myapp/js/main.js' %}"></script>
</head>
<body>
    <h1>我是标题 我最帅</h1>
    <h2>班级信息列表</h2>
    <button id="dian">请求班级信息</button>
</body>

Javascript

在static/myapp/js目录下创建main.js,

在这里设置ajax请求视图处理。

内容如下:

$(function(){
    $('#dian').click(function(){
        $.ajax({
            type:'get',
            url:'/myapp/ajax_use',
            dataType:'json',
            success:function(data, status) {
                console.log(status);
                console.log(msg);
            }
        })
    })
})

效果:

 

总结

主要是Django框架静态资源配置、加载、路径修改及ajax如何应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Koordinator 最佳实践系列:精细化 CPU 编排

作者&#xff1a;乔普、申信 介绍 在云原生环境中&#xff0c;集群提供者常常将不同类型的工作负载部署在同一个集群中&#xff0c;利用不同业务的不同峰值效果&#xff0c;实现资源分时复用&#xff0c;避免资源浪费。然而&#xff0c;不同类型负载之间混合部署常常会导致资…

字符集和java的编码与解码

一、ASCII和GBK字符集 计算机存储一个英文字符需要一个字节。 ASCII字符集&#xff0c;包括128&#xff08;0000000B~1111111B&#xff09;个数据&#xff0c;存储英文字母和字符&#xff0c;对于欧美国家够用。 例如&#xff0c;存储字符’a’&#xff0c;查询ASCII得到为97&a…

Java阶段四Day03

Java阶段四Day03 文章目录 Java阶段四Day03数据处理基本流程代码编写顺序开发DAO层&#xff0c;添加的依赖项配置数据源任务拆解内容管理MySQL中的数据类型和Java属性的类型对照关于MyBatis PlusMyBatis Plus的基本使用关于MyBatis Plus的使用建议汇总如下自动更新时间 关于Pro…

一种不停服的数据迁移方案

一、前言 好的方案是一步步演进出来的。当前最优的系统方案&#xff0c;可能在下一个月、三个月或半年后&#xff0c;就会遇到瓶颈&#xff0c;需要调整自身以便适应新的业务场景。系统的演进就是一个快进版的人类进化史。 我之前负责的一个系统&#xff0c;一开始基本没啥数…

46 最佳实践-性能最佳实践-内存大页

文章目录 46 最佳实践-性能最佳实践-内存大页46.1 概述46.2 操作指导 46 最佳实践-性能最佳实践-内存大页 46.1 概述 相比传统的4K内存分页&#xff0c;openEuler也支持2MB/1GB的大内存分页。内存大页可以有效减少TLB miss&#xff0c;显著提升内存访问密集型业务的性能。ope…

证券行业异构系统众多,微服务和网格如何全都要

在携手网易数帆取得中间件云原生化的创新成果之后&#xff0c;安信证券已在谋划大规模微服务化的布局&#xff0c;以确保信息系统架构走在现代金融科技的前列&#xff0c;支撑业务在未来数智金融竞争中把握主动权。 架构未动&#xff0c;思想先行。安信证券近日在内部组织了一…

安全左移DevSecOps开源工具链建设

开发安全相关技术和产品受到越来越多的关注。行业共识认为&#xff0c;应用系统上线之后进行软件漏洞修复&#xff0c;其修复成本是需求设计阶段修复成本的几十倍。因此&#xff0c;在开发环节&#xff0c;引入相应的安全工具&#xff0c;能够有效的降低漏洞的修复成本&#xf…

vue+el-select下拉实现:全选、反选、清空功能

问题描述&#xff1a; el-select下拉框要求实现全选功能。具体功能包括&#xff1a; 当选择【全选】时&#xff0c;所有选项全部被勾选&#xff1b;当选择【反选】时&#xff0c;已选择选项变为未选择选项&#xff0c;未选项变为已选项当选择【清空】时&#xff0c;所有选项变…

SpringBoot进阶学习?看这篇就够了

相信从事Java开发的朋友都听说过SSM框架&#xff0c;老点的甚至经历过SSH&#xff0c;说起来有点恐怖&#xff0c;比如我就是经历过SSH那个时代未流。当然无论是SSM还是SSH都不是今天的重点&#xff0c;今天要说的是Spring Boot&#xff0c;一个令人眼前一亮的框架&#xff0c;…

作用域详解

作用域详解 1、概念2、分类2.1 全局作用域2.2 局部作用域2.2.1 函数作用域2.2.2 块级作用域2.2.3 块级作用域与函数声明 1、概念 JavaScript中的作用域是指变量、函数和对象在代码中可访问的范围。作用域规定了代码中的标识符&#xff08;变量名、函数名等&#xff09;在何处和…

ansible自动部署zabbix监控平台

目录 ansible端部署 使用ansible配置zabbix-mysql端 使用ansible配置zabbix-server端 使用ansible配置zabbix-agent端 一键部署zabbix Ansible是一款开源的自动化运维工具&#xff0c;可以通过SSH协议远程自动化地执行一些复杂的IT工作&#xff0c;例如程序部署、配置管理、…

Python自动化测试——postman,jmeter接口测试

关于众所postman&#xff0c;jmeter&#xff0c;做自动化测试的我想对这两个词并不陌生。大家都知道postman用来做接口测试很方便,下面我们就用一些例子来演示一下它该如何进行接口测试&#xff1a; 首先我们来介绍一下接口测试的概念&#xff1a; 1、什么是接口测试&#xf…

【裸机开发】内核时钟 PLL1 配置实验(一)—— 寄存器分析篇

本章主要会回答以下问题 &#xff1f; imx6u 的时钟源来自于哪 &#xff1f;为什么一个起始时钟源&#xff0c;最终分成了多路&#xff1f;不同的时钟源是如何与外设对应起来的&#xff1f;&#xff08;时钟树&#xff09;要配置内核时钟频率 有哪些步骤 &#xff1f;涉及到哪…

NLP学习笔记十一-word2vec模型

NLP学习笔记十一-word2vec模型 再介绍word2vec模型之前&#xff0c;我们需要先介绍一些背景知识。 我们只知道&#xff0c;NLP这一领域在ward2vec出现之前肯定也是有很大程度发展的&#xff0c;那么想要用将自然语言用计算机进行处理&#xff0c;进行计算&#xff0c;我们必须…

JQuery全部详细笔记-下

JQuery全部详细笔记-下 jQuery 的 DOM 操作 查找节点, 修改属性 查找属性节点: 查找到所需要的元素之后, 可以调用 jQuery 对象的 attr() 方法来获取它的各种属性值 应用实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

RK3288 Android8.1添加lvds以及gt9触摸屏(二)

现在先说gt9触摸屏如何配置 首先拿到硬件厂商提供的cfg以及gt9xx文件夹 驱动源码路径&#xff1a;kernel/drivers/input/touchscreen/gtxx 注&#xff1a;可以自己定义最后把gt9xx.h以及gt9xx.c文件放在哪&#xff0c;放在哪就在makefile里指定对应位置 1.touchscreen文件夹…

耗时108天,阿里P8总结了 1000 道 Java 工程师面试题

半年前还在迷茫该学什么&#xff0c;怎样才能走出现在的困境&#xff0c;半年后已经成功上岸阿里&#xff0c;感谢在这期间帮助我的每一个人。 面试中总结了 1000 道经典的 Java 面试题&#xff0c;里面包含面试要回答的知识重点&#xff0c;并且我根据知识类型进行了分类&…

写一个自定义View你都需要注意什么

本文主要是记录一下继承子View&#xff0c;所需要实现的方法&#xff0c;以及对自己的知识做一下梳理和记录&#xff0c;其中不少内容觉得自己应该是会的&#xff0c;但是实际写起来&#xff0c;还是遇到不少阻碍 构造方法 首先构造先了解一下构造方法&#xff0c;一般来说&a…

和悦未来社区:助力共同富裕,三思打造智慧社区新样板

“共同富裕是社会主义的本质要求&#xff0c;是中国式现代化的重要特征&#xff0c;是人民群众的共同期盼。” 2021年5月20日&#xff0c;《中共中央 国务院关于支持浙江高质量发展建设共同富裕示范区的意见》正式发布。 浙江省作为共同富裕先行示范省份&#xff0c;行而不辍…

SpringCloud microservice-student-consumer-80服务消费者项目建立(四)

新建一个服务器提供者module子模块&#xff0c;类似前面建的common公共模块&#xff0c;名称是 microservice-student-consumer-1001 pom.xml修改&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSc…