Django_静态资源配置和ajax(九)

news2024/11/17 13:55:09

目录

一、静态资源配置

 二、AJAX

ajax作用

使用ajax

1、环境配置

 2、创建html模板文件

3、编写视图函数并添加路由

4、运行django开发服务器进行验证

源码等资料获取方法


一、静态资源配置

静态资源的相关配置都在项目目录下的 settings.py 文件中进行配置。配置参数如下:

# 浏览器访问静态资源时的路径
STATIC_URL = '/static2/'
# 存放静态资源的文件路径
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'booktest/static'),

]

 注意:django查找静态文件是惰性查找,查找到第一个,就停止查找了。

 二、AJAX

ajax作用

通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。也就说可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

使用ajax

下面以登录为例子介绍ajax在django中是如何使用的

1、环境配置

django使用ajax时需要先在上面创建的static文件目录下新建个js目录,然后将 jquery 这个js文件放在js目录下

 2、创建html模板文件

在 templates 目录下创建 login.html文件,在文件中引入上面添加的js文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ajax请求</title>
    <script src="/static/js/jquery-1.12.4.min.js"></script>
    <script>
        $(function(){
            // 在按钮上绑定click事件
            $("#sendAjax").click(function(){
                // 获取输入框中的用户名和密码
                var username = $('#username').val();
                var password = $('#password').val();

                // 使用ajax发送请求
                $.ajax({
                    // 'url': '/booktest/login_ajax',
                    // 使用django去除url硬编码
                    'url': '{% url "booktest:login_ajax" %}',
                    'type': 'post',
                    'dataType': 'json',
                    'data': {
                        'username': username,
                        'password': password
                    }
                }).success(function(data){      // 如果请求成功则执行,形参data为响应的数据
                    if( data.status_code==0 ){
                        alert('响应成功')
                    }else{
                        alert('响应错误')
                        return 
                    };
                    $('#message').html(data.data.message)
                    if( data.data.ret == 1){
                        $('#message').addClass('showColor')
                    }else{
                        $('#message').removeClass('showColor')
                        // 跳转到booktest首页
                        location.href = '/booktest/'
                    }
                })
            });
        });
    </script>
    <style>
        .showColor{
            color: red;
        }
    </style>
</head>
<body>
    <div>用户名:<input type="text" name="username" id="username"></div>
    <div>密码:<input type="text" name="password" id="password"></div>  
    <div><input type="button" value="登录" id="sendAjax"></div>
    <div id="message"></div>
</body>
</html>

3、编写视图函数并添加路由

在views.py文件中编写视图函数,代码如下:

from django.shortcuts import render
from django.http import JsonResponse


def login(request):
    """ 显示登录界面 """
    return render(request, "booktest/login.html")


def login_ajax(request):
    """ 响应的数据 """
    # 获取POST请求参数
    username = request.POST.get('username')
    password = request.POST.get('password')
    if username == 'admin' and password == 'admin':
        data = {
            'status_code': 0,
            'data': {
                'ret': 0,
                'message': '登录成功'
                }
            }
        # 注意:因为ajax是通过后台与服务器进行数据交换的,如果使用ajax调用的函数的响应数据是指向或重定向一个界面,浏览器是不会刷新界面的!只能通过前端实现界面跳转
        # return render(request, 'booktest/index.html')
    else:
        data = {
            'status_code': 0,
            'data': {
                'ret': 1,
                'message': '用户或密码错误'
            }
        }
    # 返回json格式数据
    return JsonResponse(data)

在urls.py文件中配置路由:

from django.urls import path
from django.urls import re_path

from booktest import views

app_name = 'booktest'   # 增加命名空间
urlpatterns = [
    path('login', views.login, name='login'),
    path('login_ajax', views.login_ajax, name='login_ajax'),
]

4、运行django开发服务器进行验证


源码等资料获取方法

各位想获取源码的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

 

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

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

相关文章

架构训练营笔记系列: 模块 1-2课

郭东白老师的架构课偏理论&#xff0c;属于道层级。李云华老师的课偏实践&#xff0c;属于术层级。没有理论不会举一反三&#xff0c;只有理论&#xff0c;就是纸上谈兵&#xff0c;两个课都很好。 架构与程序思维的区别 程序 逻辑实现 架构 判断 取舍 架构设计的关键不只…

ansible 报错 DEPRECATION WARNING 解决

报错信息 [DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host 192.168.1.1 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. A future Ansible release will default to using the discovered …

第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接

文章目录 第五十二章 开发Productions - ObjectScript Productions - 不常见的任务 - 在目标是动态的情况下渲染连接在目标是动态的情况下渲染连接使用 Ens.Director 开始和停止ProductionStopProduction()StartProduction()RecoverProduction()GetProductionStatus() 第五十二…

基于Pthreads多线程程序设计

“Hello world”程序 函数原型 1. pthread_create 函数原型&#xff1a;int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); 功能说明&#xff1a;创建一个线程。 参数说明 thread&#xff1a;线程句柄&#xf…

Pico版节奏光剑简单制作

视频教程参考&#xff1a;Pico VR Neo3开发实战教程&#xff08;1&#xff09;——节奏光剑&#xff0c;舞台灯效_哔哩哔哩_bilibili 1、新建项目和pico配置 插件导入 找到下载的pico SDK 选择json文件&#xff0c;点击即可导入 启用插件 在 Project Settings 窗口中&#xf…

Gradle的生命周期和Task

Gradle生命周期和Task 本文链接&#xff1a;Gradle的生命周期和Task_猎羽的博客-CSDN博客 Gradle生命周期 三大阶段&#xff1a; 初始化配置执行 Gradle的数量是多少&#xff1f;Module数量 Root Gradle 生命周期监听方法 生命周期监听的设置有两种方法&#xff1a; 实现…

Modelsim仿真问题解疑:初始时间段内逻辑不符

目录 一、问题描述 1.1 设计代码 1.2 综合结果 1.3 仿真结果 二、问题原因 三、解决方法 一、问题描述 在使用mode​lsim进行功能仿真时&#xff0c;会遇到如下情况&#xff0c;仿真结果在前面一段时间内的逻辑输出不符预期&#xff0c;后面的结果符合预期 以实现一个D触发…

火车头小发猫AI伪原创[php源码]

对于大多数站长来说&#xff0c;有点困难&#xff0c;但是如果他们不知道如何原创&#xff0c;我们不知道如何伪原创吗&#xff1f;我把我常用的伪原创的方法列出来&#xff0c;希望对大家有所帮助。 使用教程&#xff1a;火车头采集器AI伪原创 <?php header("Conte…

使用配置文件自定义线程池参数

首先创建线程池MyThreadConfig &#xff1a; Configuration public class MyThreadConfig {Beanpublic ThreadPoolExecutor threadPoolExecutor(){return new ThreadPoolExecutor(20,200,10,TimeUnit.SECONDS,new LinkedBlockingDeque<>(100000),Executors.defaultThrea…

SpringBoot集成Quartz集群模式

<!-- quartz定时任务 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency> 单机版本&#xff1a; SpringBoot集成Quartz动态定时任务_jobgroupname_小…

CentOS环境下的Nginx安装

Nginx 安装 下载 nginx 下载地址&#xff1a;http://nginx.org/en/download.html 将下载好的压缩包拷贝到根目录下 通过xshell如果出现 bash: rz: 未找到命令 &#xff0c;需要先运行下面的命令 yum -y install lrzsz安装 解压到当前目录 tar -zxvf nginx-1.22.1.tar.gz安…

尚无忧餐桌预订订桌包厢预订小程序源码

1.支持中餐、晚餐不同时间段桌位预定 2.支持包厢&#xff0c;大厅等不同区域预定 本系统后台tpvue 前端原生小程序 <!-- 导航栏 --> <!-- <van-nav-bar title"{{canteen}}" title-class"navbar" /> --> <van-nav-bar title"…

路径规划算法:基于水基湍流优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于水基湍流优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于水基湍流优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

springbboot拦截器,过滤器,监听器及执行流程

执行流程 过滤器是在请求进入容器后&#xff0c;但请求进入servlet之前进行预处理的。请求结束返回也是&#xff0c;是在servlet处理完后&#xff0c;返回给前端之前 请求按照上图进入conteoller后执行完再返回 过滤器&#xff08;Filter&#xff09;&#xff1a; 过滤器是S…

Matlab画等构造图

clc;clear;close all; data xlsread(TOPBRENT等T0构造.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); N 45; …

BeanFactory与ApplicationContext基本介绍

接口定义能力&#xff0c;抽象类实现接口的一些重要方法&#xff0c;最后实现类可以实现自己的一些逻辑 BeanFactory简介 仅仅是一个接口&#xff0c;Spring 的核心容器&#xff0c;并不是IOC容器的具体实现&#xff0c;它的一些具体实现类才是 BeanFactory 与 ApplicationCo…

运动想象MI:带通滤波的Python实现

运动想象MI&#xff1a;带通滤波的Python实现 0. 引言1. 代码介绍1.1 实现方法&#xff08;1&#xff09;1.2 实现方法&#xff08;2&#xff09; 2. 函数介绍3. 滤波函数介绍4. 总结 0. 引言 在执行运动想象任务时&#xff0c;由于实际采集实验不是在完全屏蔽的环境中进行的&…

计算机体系结构基础知识介绍之高级分支预测(一)

由于需要通过分支危险和停顿来强制控制依赖&#xff0c;分支会损害管道性能。 循环展开是减少分支危险数量的一种方法&#xff1b; 我们还可以通过预测分支的行为来减少分支的性能损失。 分支预测是一种计算机技术&#xff0c;它的目的是在执行分支指令之前&#xff0c;预测分支…

人工智能三要素:算法、算力、数据

1 人工智能介绍 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指计算机系统模拟、模仿和执行人类智能的能力。它是一门研究如何使计算机能够像人类一样思考、学习、推理和解决问题的科学和技术领域。 人工智能通过利用大量的数据和强大的计算…

ACL访问控制、Squid 反向代理

ACL访问控制、Squid 反向代理 一、ACL访问控制1、定义访问控制列表2、配置步骤 二、Squid 反向代理1、工作机制2、配置步骤 一、ACL访问控制 在配置文件 squid.conf 中&#xff0c;ACL 访问控制通过以下两个步骤来实现&#xff1a; &#xff08;1&#xff09;使用 acl 配置项定…