Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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_Django Templates - Fatal编程技术网

Django CSS文件未出现在生产服务器中

Django CSS文件未出现在生产服务器中,django,django-templates,Django,Django Templates,我的css文件在生产服务器中不起作用。我使用WSGI进行部署。请你解决我的问题好吗?非常感谢。 css链接 <link href="{{ MEDIA_URL}}css/style.css" rel="stylesheet" type="text/css" /> 站点可用\default <VirtualHost *:80> ServerAdmin me@me.com ServerName project.org DocumentRoot "/ho

我的css文件在
生产服务器中不起作用。我使用
WSGI
进行部署。请你解决我的问题好吗?非常感谢。
css链接

<link href="{{ MEDIA_URL}}css/style.css" rel="stylesheet" type="text/css" />
站点可用\default

<VirtualHost *:80>
    ServerAdmin me@me.com
    ServerName project.org
    DocumentRoot "/home/nibbler/code/project/"
    ServerName localhost
    ErrorLog "/home/nibbler/code/project/logs/apache-error.log"
    CustomLog "/home/nibbler/code/project/logs/apache-access.log" common

    Options ExecCGI FollowSymLinks MultiViews

    AddHandler wsgi-script .wsgi
    WSGIDaemonProcess nibbler
    WSGIProcessGroup nibbler

    Alias /media /home/nibbler/code/project/templates/media/
    WSGIScriptAlias / /home/nibbler/code/project/apache/django.wsgi

    DirectoryIndex index.html index.cgi

    AddHandler cgi-script .cgi .pl
</VirtualHost>

您只对CSS文件或所有媒体文件有问题吗

MEDIA\u ROOT
-应该是系统上文件的完整路径,看起来您已经拥有了,很好。
MEDIA\u URL
-尝试将完整URL放入媒体文件。试着用完整的url手动访问他们,看看Web服务器是否为他们提供了正确的服务。如果是,则将完整url放入媒体url

在生产中不需要使用
if settings.DEBUG
显示的最后一项内容。您确实希望在生产服务器上设置DEBUG=False

顺便说一句,Django建议有两个虚拟主机——一个用于Django应用程序本身,另一个用于媒体(在这里,您只使用http服务器直接提供静态内容,没有动态内容)

希望对你有点帮助

您有:

Alias /media /home/nibbler/code/project/templates/media/
一开始就错了。尝试:

Alias /media/ /home/nibbler/code/project/templates/media/
它们必须都有尾随斜杠,或者都没有尾随斜杠。你不能一个有,另一个没有

顺便说一句,拥有:

DocumentRoot "/home/nibbler/code/project/"
这是个坏主意。不要将DocumentRoot设置为代码所在的位置。如果出于某种原因要删除WSGISriptAlias,那么所有代码都可以由外部人员下载


对于存在WSGI脚本文件和静态文件的位置,您还缺少一个包含Allow指令的目录块。这意味着您在这个虚拟主机之外以某种方式更改了Apache配置,表示Apache可以从您的设备上的任何目录提供文件,这是一个坏主意,因为它剥夺了一个级别的安全性。

对于媒体根用户来说也是这样。settings.py中没有结尾斜杠。您是否尝试过访问静态媒体文件?您是否希望这些文件的URL能够解决您遇到的HTTP错误?您是否查看了页面的HTML源代码以查看返回的内容是否正确?目录/Allow是怎么丢失的呢?顺便说一句,非常建议你去看@GrahamDumpleton,我试图从源代码(使用查看源代码)访问静态媒体。我收到错误信息<代码>未找到此服务器上未找到请求的URL/media/css/style.css。
是否已检查目标文件系统目录是否可供Apache用户访问?您是否确保没有使用符号链接?如果没有配置,Apache将不会使用这些符号链接?您是否确保在进行配置更改时重新启动Apache?
Alias /media/ /home/nibbler/code/project/templates/media/
DocumentRoot "/home/nibbler/code/project/"