在Django中使用css,js等静态文件

捣鼓了三个晚上才成功,遇到了好多麻烦,发现别人的博客都操作不了,赶紧把自己的操作分享出来
下面是方法:
1. settings 中有三个地方要写

# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'templates/Web/static')

STATICFILES_DIRS = [
    ("css", os.path.join(STATIC_ROOT, 'css')),
    ("img", os.path.join(STATIC_ROOT, 'img')),
    ("js", os.path.join(STATIC_ROOT, 'js')),
]
  • 这里STATIC_URL通常设为’/static/’,当然设成别的也可以,它的作用其实就是当我们想要引用在STATIC_ROOT中静态文件时可以有一个URL值来调用,其实我觉得设成空也没什么关系吧,具体调用在后面讲;
  • STATIC_ROOT 这个很关键
    通常我们设成STATIC_ROOT = os.path.join(BASE_DIR, "templates/Web/static/")(Linux下这样,Windows下斜杠不一样,要用replace换一下),BASE_DIR是整个项目的根目录,所以后面的设成到你的static文件夹的路径就行,没有必要跟我一样
  • STATIC_DIRS,这也是我和别人的过程不一样的地方
    格式跟我那个一样就好,最开始这里我写的就是
STATICFILES_DIRS = [
        STATIC_ROOT,
]

结果浏览器报错
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
也就是STATICFILES_DIRS 和 STATIC_ROOT一定不能相同!!!
之后百度一搜写成最后那样,发现还是不行,
问题出在当我HTML访问的是××××/static/××××.css时,我用××××/SpiderWeb/static/××××.css可以访问到
但是当我把HTML改为××××/SpiderWeb/static/××××.css,我用××××/SpiderWeb/static/××××.css就访问不到了
F12发现浏览器还是找不到静态文件,最后搜百度看源码文件,发现这个DIR的作用是
collect static files for deployment.
可以通过collectstatic指令把静态文件自动收集一下!!!也就是上面讲的STATIC_ROOT 的地址,这里很关键就不用管django怎么找这些静态文件了,Tool下面进 manage.py,然后输入collectstatic,之后选yes,大功告成!
其实,执行collectstatic命令后,所有static文件都收在STATIC_ROOT的子目录css,js,img中,所以我们引用静态文件的时候,也可以直接使用/static/css,而不使用…/templates/Web/static/css了
2. urls中直接引用的方法

from django.conf import settings
from django.views.static import serve
#urlpartterns中加
url(r'^static/(?P<path>.*)$',serve,{'document_root': settings.STATIC_ROOT}),

前面讲引用就在这里前面把静态文件收集到ROOT里,现在直接用settings.STATIC_ROOT,在浏览器里输入http://127.0.0.1:8000/static/style.css 就可以访问啦(当然要runserver)
3. HTML 中很简单,大家的博客都有写,两个要点
- load staticfiles
- {% static '*****'%}
比如我的是这样的:

<!DOCTYPE html>
{% load staticfiles %}
<html>
<head>
    <title>1</title>

    <!-- meta -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- css -->
    <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    <link rel="stylesheet" href="{% static 'css/pace.css' %}">
    <link rel="stylesheet" href="{% static 'css/custom.css' %}">
    <!-- js -->
    <script src="{% static 'js/jquery-2.1.3.min.js' %}"></script>
    <script src="{% static 'js/bootstrap.min.js' %}"></script>
    <script src="{% static 'js/pace.min.js' %}"></script>
    <script src="{% static 'js/modernizr.custom.js' %}"></script>

这样就可以了,
这里分享几个主要参考的网址
http://www.jianshu.com/p/3bf9fb2a7e31
http://www.jianshu.com/p/2e5515032db0

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Django 导入静态资源文件,可以按照以下步骤进行操作: 1. 在 Django 项目的根目录下创建一个名为 `static` 的文件夹,用于存放静态文件,例如 CSSJavaScript、图片等。 2. 在 `settings.py` 文件,将 `STATIC_URL` 设置为静态文件的 URL 前缀,例如: ```python # settings.py STATIC_URL = '/static/' ``` 3. 在需要使用静态文件的模板或视图使用 `{% load static %}` 加载静态文件标签库,并使用 `static` 模板标签生成静态文件的 URL。 例如,在模板加载 CSS 文件: ```html <!-- templates/base.html --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{% block title %}My Website{% endblock %}</title> <link rel="stylesheet" href="{% static 'css/style.css' %}"> </head> <body> {% block content %} {% endblock %} </body> </html> ``` 在视图加载图片文件: ```python # views.py from django.shortcuts import render def my_view(request): context = {'img_url': '/static/images/my-image.jpg'} return render(request, 'my_template.html', context) ``` 在模板使用 `img` 标签加载图片: ```html <!-- templates/my_template.html --> {% extends 'base.html' %} {% block content %} <h1>My Page</h1> <img src="{{ img_url }}" alt="My Image"> {% endblock %} ``` 以上是在 Django 导入静态资源文件的基本步骤。需要注意的是,Django 会在应用程序目录下查找静态文件,例如 `myapp/static/`,如果找不到,会在根目录下的 `static` 文件查找。另外,在生产环境,建议使用专业的 Web 服务器来处理静态文件,例如 Nginx 或 Apache。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值