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

目录

使用静态文件

创建静态文件目录

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如何应用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值