情况我有一个 django 3.0 应用程序,我已经在其中构建了一些正在运行的应用程序。我试图创建一个用于注册、登录的身份验证应用程序。注册和登录的后端工作。但是像.js、.css、图像这样的静态文件没有出现。我还有一个 base.html 文件,其中包含扩展至此 signup.html 的所有样式表导入和 javascript 导入不知何故,如果我只用 base.html 文件中的扩展名填充 signup.html 文件,它仍然会给我同样的错误文件夹结构mainapp-项目mainapp(这是我保存扩展至的 base.html 文件的地方)secondapp(base.html 文件在这里扩展)settings.py#actual folder name where we save our imagesSTATICFILES_DIRS = [os.path.join(BASE_DIR, 'mainprojectfolder/static/')]# Removed based on: https://stackoverflow.com/questions/60354519/django-base-html-extended-to-homepage-html-static-images-appear-but-home-css-dSTATIC_ROOT = os.path.join(BASE_DIR, 'static')#this_is_what_U_see_in_URL_bar_for_static_filesSTATIC_URL = '/static/'base.html<!doctype html><html>{% load static %}<!-- SYLES & BASICS--><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/> <title> </title> <link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/carousel/"> <link rel="stylesheet" href="static/css/bootstrap/bootstrap.min.css"> <!-- --> <link href="static/css/style.min.css" rel="stylesheet"></head><body><header>...</header>{% block content %}{% endblock %} <script src="static/public/js/jquery/jquery.min.js"></script> <script src="static/public/js/popper/popper.min.js"></script> <script src="static/public/js/bootstrap/bootstrap.min.js"></script></body></html>登录.html{% extends 'ch/templates/base_emp.html' %}{% load static %}{% block content %}<!-- MY COTENT, no imports only file requests-->{% endblock %}
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
你应该改变:
<script src="static/public/js/jquery/jquery.min.js"></script> ...
进入
<script src="{% static 'public/js/jquery/jquery.min.js' %}"></script> ...
茅侃侃
TA贡献1842条经验 获得超21个赞
查看它试图获取的路径:
/accounts/static/public/js/jquery/jquery.min.js
这不是您想要的,因为在 urls.py 中以开头的任何内容/accounts都指向您的身份验证视图。
问题是您正在为静态文件使用相对路径:static/public/js不以 a 开头,/因此它相对于当前页面。如果页面是/account/login,则路径是相对于/account/。
所以基本上你需要有/static/public/js/.... 它开始于/所以它是一个绝对路径。
但是定义的全部原因STATIC_URL是您不必在模板中记住它。为此,有static模板标签:
{% load static %}
<!-- scripts -->
<script src="{% static 'public/js/...' %}"></script>
<!-- css files -->
<link rel="stylesheet" href="{% static 'css/bootstrap/bootstrap.min.css' %}">
<!-- images -->
<img src="{% static 'images/small.png' %}">
引用静态文件时,请始终{% static %}在模板中的任何位置使用,这是底线。
添加回答
举报
0/150
提交
取消