如何链接Django pag中的资源

2024-04-26 00:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个HTML页面(基本.html)必须包含一个JavaScript文件。你知道吗

<script type="text/javascript" src="/js/main.js"></script>

据我所知,Django项目不是托管在公共文件夹中的。相反,请求被路由到生成响应的views.py。你知道吗

假设我的项目目录如下所示

- project
- project_app
    - views, models, ecc…
- templates
    - base.html
    - css
        - main.css
    - js
        - main.js

为什么base.html可以引用main.cssmain.js?如果我访问myserver.com/js/main.js,则不应返回任何内容(因为模板文件夹不是公共的)。但是浏览器需要访问这些文件,我需要包含它们。你知道吗

我是否需要编写一个特定的URL规则来将请求重定向到/js/main.js到实际的js文件,或者什么样的魔法可以让一个简单的html包含工作?你知道吗


Tags: 文件项目project文件夹basemainhtmltype
2条回答

通常的方法是将CSS、javascript和类似文件保存在static文件夹中,并将它们提供给html。一般Django文档可以在here找到。你知道吗

简而言之,您的目录如下所示:

- project
- project_app
    - views, models, ecc…
- templates
    - base.html
- static
    - css
        - main.css
    - js
        - main.js

然后,您的base.html将使用以下方法引用该文件:

<script type="text/javascript" src="/static/js/main.js"></script>

我在顶部引用的文档展示了如何在生产环境中提供静态文件。许多人使用内容交付网络(CDN)来服务他们的静态文件。亚马逊的S3服务就是一个例子。然后,将settings.py中的STATIC_URL设置更改为S3 bucket(或类似的网络)。然后可以引用模板中的STATIC_URL。你知道吗

{% load static %}
...
<script type="text/javascript" src="{% static 'js/main.js' %}"></script>
...

您将使用./manage.py collectstatic之类的命令来收集静态文件,并在特定时间将它们移动到CDN中。collectstatic的基础知识可以在here找到。你知道吗

您需要使用命令django将所有静态文件放在static\u根文件夹中-管理员.py收集并提供此文件夹。更多详情和解释请参见:

https://docs.djangoproject.com/en/dev/howto/static-files/#managing-static-files-css-images

相关问题 更多 >