Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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静态文件404_Django_Static_Http Status Code 404 - Fatal编程技术网

Django静态文件404

Django静态文件404,django,static,http-status-code-404,Django,Static,Http Status Code 404,我无法打开我的静态文件。我尝试过各种设置和目录配置等等,但它们只是显示为404。我安装了调试工具条,以便知道静态URL正在到达我的请求上下文 目录结构显示为/static(我还将目录放在了Founds应用程序文件夹和用户中,只是为了尝试一下 /mealmate /mealmate /meals /static /css /bootstrap.min.css /templates /users Settings.p

我无法打开我的静态文件。我尝试过各种设置和目录配置等等,但它们只是显示为404。我安装了调试工具条,以便知道静态URL正在到达我的请求上下文

目录结构显示为/static(我还将目录放在了Founds应用程序文件夹和用户中,只是为了尝试一下

/mealmate
    /mealmate
    /meals
    /static
        /css
             /bootstrap.min.css
    /templates
    /users
Settings.py(一些重要的设置,尽管我已经尝试了许多其他设置):

在base.html中呈现

    <link rel="stylesheet" href="/static/css/bootstrap.min.css">

有什么想法吗?
谢谢

我假设您在这里使用的是Django1.3+

首先,您需要定义更多设置:

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

STATICFILES_DIRS = [
    path.join(TOP_DIR, 'static'),
]

STATIC_ROOT = path.join(TOP_DIR, 'staticfiles')
STATIC_URL = '/static/'
这将帮助您找到该目录

此外,您应该始终使用
静态URL
访问静态文件:

<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">

如果在web服务器上运行此功能,是否将静态文件复制到公共可访问文件夹?例如:

# web accessible folder
STATIC_ROOT = '/home/your_name/www/mealmate/static/'

# URL prefix for static files.
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # location of your application, should not be public web accessible 
    '/home/your_name/website/mealmate/static',
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
然后,您可以使用此帖子并使用manage.py将静态文件复制到公共可访问文件夹

# --link    Create a symbolic link to each file instead of copying.
# --noinput Do NOT prompt the user for input of any kind.
#
python manage.py collectstatic -link --noinput

希望有帮助!

这是django for windows中静态/媒体/模板访问的工作解决方案

设置.py

import os.path

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = ( os.path.join('static'), )

我只是添加了相当于

STATICFILES_DIRS = (
    '/absolute_path_to_project/mealmate/static',
)

当然,用您的实际路径替换
absolute\u path\u to\u project
,如果需要,添加驱动器号。

确保mealmate在您安装的应用程序中

我也遇到了404问题,直到我意识到Apache阻止了对静态目录的请求。我使用了
python manage.py collectstatic
将所有静态文件复制到我的项目根目录下的static目录,即/var/my/site/static

Alias /static /var/my/site/static
<Directory /var/my/site/static>
        Require all granted
</Directory>
Alias/static/var/my/site/static
要求所有授权
/etc/httpd/conf/httpd.conf中,它现在可以正常工作


如果上面的答案都不起作用,你可以考虑检查你的服务器配置。

,这是因为在<代码>设置> Py < /C>中将调试设置为false。一个解决办法是通过<代码>不安全的< /代码>切换到<代码> RunServer < /代码>,但是真正的解决方案是使用适当的Web服务器来服务静态文件。在Django中,您的模板还有一个优点,就是您可以像这样链接静态,这可能是您的问题

<script src="{% static 'myapp/bootstrap.min.js' %}"></script>
<link href="{% static 'myapp/bootstrap.css' %}" rel="stylesheet" type="text/css"/>

使用它更好

{%static'文件名“%”

而且也比较容易
要了解更多信息,请参考上面的评论-运行此

python manage.py findstatic --verbosity 2 css/styles.css
找不到与“css/styles.css”匹配的文件

查看以下位置:
/用户/yourname/Documents/Workspace/test/staticfiles

我只是简单地将我的static文件夹重命名为staticfiles,一切都很好

如果您使用的是本地开发设备,那么使用不安全模式可能不会有什么坏处,否则您仍然可能会遇到404错误

python manage.py runserver --insecure
更新

实际上,深入到settings.py中发现了侵权线路

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'staticfiles'),
)

我认为您没有将已安装的应用程序放入settings.py文件,您应该添加“mealmate”


之后,django将可以看到静态文件和命令文件。我在命令方面遇到了问题,这就是我解决问题的方法。

在我的情况下,我所要做的就是重新运行服务器:

python manage.py runserver

如果您最近在设置文件中将调试更改为false,请执行以下步骤

大多数情况下,它是由settings.py中的调试设置为false引起的。如果将--unsecure开关传递到runserver,它应该可以工作。因此,如果执行
python manage.py runserver 0.0.0:8000
操作,请将其改为
python manage.py runserver 0.0.0.0:8000--unsecure


它应该可以工作。

setting.py中添加以下内容

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

在Cpanel上,这是一个很好的解决方案

在cpanel的端子上安装dj static static3

pip install dj-static static3
然后在wsgi.py中替换此代码py应用程序

from dj_static import Cling

application = Cling(get_wsgi_application())

我也面临同样的问题。这里我如何解决在模板中访问静态文件的问题

我的Django项目(Recognition/)文件目录如下所示:

/media
   /1
     i1.jpg
     i2.jpg
     ....

/static
    /css
       /op.css
    /img
       /emoji.png

/Recognition
    ...
    /settings.py
    /urls.py
    ...

/uploader
    ...
    /urls.py
    /templates
         /uploader
             /create.html
    ...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Recognition',
    'uploader',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urlpatterns = [
    path('admin/', admin.site.urls),
    ...
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
% load static %}
    <link rel="stylesheet" type="text/css" href="{% static '/plugins/bootstrap/css/bootstrap.css' %}">
My settings.py如下所示:

/media
   /1
     i1.jpg
     i2.jpg
     ....

/static
    /css
       /op.css
    /img
       /emoji.png

/Recognition
    ...
    /settings.py
    /urls.py
    ...

/uploader
    ...
    /urls.py
    /templates
         /uploader
             /create.html
    ...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Recognition',
    'uploader',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urlpatterns = [
    path('admin/', admin.site.urls),
    ...
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
% load static %}
    <link rel="stylesheet" type="text/css" href="{% static '/plugins/bootstrap/css/bootstrap.css' %}">
我的(Recognition/url.py)如下所示:

/media
   /1
     i1.jpg
     i2.jpg
     ....

/static
    /css
       /op.css
    /img
       /emoji.png

/Recognition
    ...
    /settings.py
    /urls.py
    ...

/uploader
    ...
    /urls.py
    /templates
         /uploader
             /create.html
    ...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Recognition',
    'uploader',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urlpatterns = [
    path('admin/', admin.site.urls),
    ...
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
% load static %}
    <link rel="stylesheet" type="text/css" href="{% static '/plugins/bootstrap/css/bootstrap.css' %}">
然后我访问模板(create.html)中的所有静态文件和媒体文件,如下所示: 下面是示例代码

<!DOCTYPE html>
<html>
<head>
   {% block extrahead %}
      <link rel="stylesheet" type="text/css" href="static/css/op.css">
   {% endblock %}
</head>

<style type="text/css">
.notfound .notfound-404 {
  ...
  background-image: url('static/img/emoji.png');
  ...
}
<style>

<body>
  <img src="{{ MEDIA_ROOT }}/media/i1.jpg" class="image_responsive" height="100px" width="100px">
</body>

对我来说,我什么也不做,只运行manage.py runserver myip:port。然后我关闭它并重新启动uwsgi,静态文件成功加载。我不知道为什么,但它对我有效…

在我的情况下,我的静态文件在
资源/static
目录中,我设置了一些设置,如blow-in
设置.py
文件:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, './resources/static/'),
)
在我的模板中使用它,如下所示:

/media
   /1
     i1.jpg
     i2.jpg
     ....

/static
    /css
       /op.css
    /img
       /emoji.png

/Recognition
    ...
    /settings.py
    /urls.py
    ...

/uploader
    ...
    /urls.py
    /templates
         /uploader
             /create.html
    ...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Recognition',
    'uploader',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urlpatterns = [
    path('admin/', admin.site.urls),
    ...
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
% load static %}
    <link rel="stylesheet" type="text/css" href="{% static '/plugins/bootstrap/css/bootstrap.css' %}">
%load static%}

这种方法对我很有效。

在项目主文件夹的settings.py中插入以下行:

STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join('static'))
然后,在html文件中插入:

{% load static %}

最后,在settings.py中,将
django.contrib.staticfiles
添加到
INSTALLED_APPS=[…]

嗨,我正在使用{STATIC_URL}。有点不清楚,我显示的html是演示标记工作的呈现文件。我在本地工作,因此我认为只要/STATIC目录就位,就只需要静态URL设置。如果我手动生成了静态文件夹,为什么需要运行collectstatic?我还是这样做了,但仍然不起作用。Django无法识别我的静态文件夹,尽管进行了设置。请尝试:
python manage.py findstatic--verbosity 2 css/styles.css
查看Django在哪里查找您的静态文件。@deed02392我知道这是很久以后的事了,但谢谢您,我无法找到我的静态文件夹不工作的原因。无论我如何尝试更改
static\u URL
在我的设置中,它不起作用。然后该命令帮助我找到位置,我不知道为什么它不会改变,尽管很高兴它帮助@Amon,它是帮助我找出牙床上发生了什么的关键命令,太好了!对于额外的I