Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在django中硬编码CSS链接吗?_Django - Fatal编程技术网

可以在django中硬编码CSS链接吗?

可以在django中硬编码CSS链接吗?,django,Django,我有一个django项目,想硬编码到CSS的链接(我不想使用静态文件等等)。原因是我希望能够单击index.html,它可以在浏览器上工作(包括获取css文件) 我将index.html和index.css放在同一个目录中,并在index.html中添加了这一行: <link rel="stylesheet" type="text/css" href="./index.css"/> 当我双击index.html时,它会完美地导入index.css 但是,当我用django开发

我有一个django项目,想硬编码到CSS的链接(我不想使用静态文件等等)。原因是我希望能够单击index.html,它可以在浏览器上工作(包括获取css文件)

我将index.html和index.css放在同一个目录中,并在index.html中添加了这一行:

<link rel="stylesheet" type="text/css" href="./index.css"/> 

当我双击index.html时,它会完美地导入index.css

但是,当我用django开发服务器加载它并通过浏览器打开时,它不会导入index.css


应该怎么做才能使index.html接受index.css

这是因为浏览器使用基于目录的方法

假设您的模板目录如下所示:

/home/yura/project/templates/
                            → index.html
                            → index.css
使用浏览器打开index.html时,它会在同一目录中查找index.css,从而查找
/home/yura/project/templates/index.css

现在,当您运行开发服务器时,它不再基于目录。有一个
urls.py
文件指定每个路径指向的位置。
您可能有一条通向
index.html
的路径,即使
index.html
不是空的。您还可以添加一个路径
/blog/
,该路径可能导致
blog\u home.html
,即使该文件名为
blog\u home.html
进入django的每个url都通过
url.py
文件路由。 这是django的核心概念之一。URL应该是用户可输入的、可读的,而无需使用php或CGI等基于目录的方法,如
.php
.html

由于您尚未定义名为
/index.css
的路由,因此找不到
index.css

如果您正在做的事情是一次性的,那么您最好只添加一条路径到
/index.css
,该路径提供
index.css

否则就没有办法做到这一点,因为django不是基于目录的,如上所述


然后,您可能会想,为什么您也希望能够直接在浏览器中打开原始html文件,因为它使django模板语言对您完全无用,因此您无法执行任何与变量、循环和逻辑相关的操作,并且只能使用基本html,与其使用django开发服务器,不如使用一个简单的http服务器。

Christopher Schäpers的答案非常有效,我想通过展示您如何实际执行她的建议来扩展她的答案

假设你有

<link rel="stylesheet" type="text/css" href="/index.css"/> 

注意:请记住根据您提供的服务正确设置
content\u type
关键字参数(例如:
application/javascript
for
.js
image/png
for
.png
,等等)。

为什么不使用静态文件夹?更重要的是,为什么要使用Django?您的需求更适合由Apache或nginx直接提供服务的静态站点。我不想使用静态的原因是,O需要将一些文件提供给第三方,而他们不使用DjangoGreat,这意味着一些亮点。谢谢
from django.urls import path
from django.conf import settings
from django.http import HttpResponse

def css_path(request):  # This is basically a "view"
    path = settings.BASE_DIR / 'index.css'  # For earlier Django version: os.path.join(settings.BASE_DIR, 'index.css')
    with open(path, 'rb') as f:
        content = f.read()
    return HttpResponse(content, content_type='text/css')

urlpatterns = [
    # ... (your other url patterns)
    path('index.css', css_path)
]