django静态文件不工作

cpjpxq1n  于 2023-08-08  发布在  Go
关注(0)|答案(7)|浏览(115)

出于某种原因,django没有提供我的静态文件。
我已经看了一堆修复这个问题,但我仍然没有找到解决方案。
以下是我的配置:
urls.py

urlpatterns = patterns('',
    (r'^$', index),
    (r'^ajax/$', ajax),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': path.join(path.dirname(__file__), 'static')}),
)

字符串
settings.py

STATIC_ROOT = '/home/aurora/Code/django/test/static/'
STATIC_URL = '/static/'
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)


导航到http://localhost:8000/static/css/default.css
我得到这个错误:'css/default.css' could not be found
导航到http://localhost:8000/static/
我得到这个错误:Directory indexes are not allowed here.
看起来静态目录被Map出来了,但是子目录没有。

eni9jsuy

eni9jsuy1#

开发中:

  • STATICFILES_DIRS应具有所有静态文件所在的所有静态目录
  • STATIC_URL应该是/static/,如果你的文件在本地机器上,否则把基本URL放在这里,例如。“网址:http://example.com/“
  • INSTALLED_APPS应包括'django.contrib.staticfiles'

在模板中,加载staticfiles模块:

{% load staticfiles %}
..
..
<img src='{% static "images/test.png" %}' alt='img' />

字符串

生产中:

  • 添加STATIC_ROOT,Django使用它来收集来自STATICFILES_DIRS的所有静态文件
  • 收集静态文件
python manage.py collectstatic [--noinput]

  • 将路径添加到urls.py
from . import settings
    ..
    ..
urlpatterns = patterns('',
..
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATIC_ROOT)}),)`


以下列出了更详细的文章:
http://blog.xjtian.com/post/52685286308/serving-static-files-in-django-more-complicated
http://agiliq.com/blog/2013/03/serving-static-files-in-django/

a0zr77ik

a0zr77ik2#

试着运行python manage.py collectstatic,看看静态文件是在哪里收集的。
将其添加到您的urls.py并在settings.py中设置DEBUG=True

if settings.DEBUG:
    urlpatterns += patterns('',
             (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes':True}),
         )

    urlpatterns += patterns('',
            (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes':True}),
        )

字符串

wmtdaxz3

wmtdaxz33#

我不认为你需要你的静态路径在urls.py,删除它,它应该工作。
目前是这样的

urlpatterns = patterns('',
    (r'^$', index),
    (r'^ajax/$', ajax),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': path.join(path.dirname(__file__), 'static')}),
)

字符串
只需删除r'^static行

urlpatterns = patterns('',
    (r'^$', index),
    (r'^ajax/$', ajax),
)


至少在Django1.3和更高版本中是这样的

uurv41yg

uurv41yg4#

您可以执行这样的设置,如
1.在settings.py中添加静态目录路径

STATICFILES_DIRS = [
     BASE_DIR / "static"
 ]

字符串
参考:https://docs.djangoproject.com/en/3.1/howto/static-files/
1.在urls.py中添加一行代码

urlpatterns += staticfiles_urlpatterns()

3htmauhk

3htmauhk5#

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

字符串

wswtfjt7

wswtfjt76#

我正在使用以下设置:(2021年4月)

  • macos大肯定
  • vscode
  • Ananconda 3(环境)

当我尝试使用http://localhost:8000/static/test.txt访问Django中的静态文件时,如果静态文件夹中存在test.txt文件。
1.打开主项目文件夹中的setting.py文件,然后
1.最后将此代码粘贴到settings.py中:

STATIC_URL = '/static/'

# Added Manually
STATICFILES_DIRS = [
    BASE_DIR / "static",
]

字符串
然后重新启动VS Code。

hmtdttj4

hmtdttj47#

这里的主目录名是mysite,应用程序名是polls(polling_app project Django tutorial)。
1.在主文件夹(mysite)中创建一个静态文件夹。
1.我们可以在静态文件夹中添加静态文件(如JavaScript,imagefile,css等)。
1.在创建静态文件夹后,我们必须通过在settings.py中添加下面的行来通知Django(在STATIC_URL = '/static/'行下面)

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

现在告诉django查看你添加的静态文件。#在settings.py文件顶部添加导入操作系统

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

在terminal中运行此命令以收集项目中的所有静态文件。

  1. python manage.py collectstatic

运行服务器,如果需要,添加端口名。

  1. python manage.py runserver portname

相关问题