无法在django python中提供css、js等静态文件

无法在django python中提供css、js等静态文件,python,django,settings,Python,Django,Settings,我对django非常陌生,已经学习了很多天的教程,我已经开始使用django构建一个小网站,并尝试通过在settings.py文件中安排所有必要的设置来提供css文件。但不幸的是,我的代码无法为css文件服务,我的意思是服务css文件的概念不起作用。我在谷歌上搜索了很多,浏览了django主文档教程,并根据这些教程进行了更改,但仍然不起作用,所以我将整个代码粘贴到下面 项目文件夹的结构 personnel_blog |____personnel_blog |____ma

我对
django
非常陌生,已经学习了很多天的教程,我已经开始使用django构建一个小网站,并尝试通过在
settings.py
文件中安排所有必要的设置来提供
css
文件。但不幸的是,我的代码无法为css文件服务,我的意思是服务css文件的概念不起作用。我在谷歌上搜索了很多,浏览了django主文档教程,并根据这些教程进行了更改,但仍然不起作用,所以我将整个代码粘贴到下面

项目文件夹的结构

 personnel_blog
      |____personnel_blog
      |____manage.py  |  
                      |____media
                      |____static
                      |       |____css
                      |             |____personnel_blog_hm.css 
                      |____template 
                      |        |____home_page.html
                      |____settings.py
                      |____urls.py
                      |____views.py
                      |____wsgi.py         
下面是my settings.py文件的一些设置

设置.py

import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
MEDIA_ROOT = os.path.join(PROJECT_DIR,'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR,'static')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
                    os.path.join(PROJECT_DIR,'static'),
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)
TEMPLATE_DIRS = (
                 os.path.join(PROJECT_DIR,'templates')
)
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
)
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
     url(r'^$', 'personnel_blog.views.home_page'),
     url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': True }),
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': True }),
from django.shortcuts import render_to_response

def home_page(request):
    return render_to_response("home_page.html")
url.py

import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
DEBUG = True
MEDIA_ROOT = os.path.join(PROJECT_DIR,'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR,'static')
STATIC_URL = '/static/'

STATICFILES_DIRS = (
                    os.path.join(PROJECT_DIR,'static'),
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)
TEMPLATE_DIRS = (
                 os.path.join(PROJECT_DIR,'templates')
)
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
)
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
     url(r'^$', 'personnel_blog.views.home_page'),
     url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': True }),
        url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes': True }),
from django.shortcuts import render_to_response

def home_page(request):
    return render_to_response("home_page.html")
主页.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head>
    <link rel="stylesheet" href="{{ STATIC_URL }}css/personnel_blog_hm.css" type="text/css">
  </head>
  <body>
   <p>Hello !</p>
   <a href="/" target="_top">Home</a>
  </body> 
</html>  
{% load static %}

<link rel="stylesheet" href="{% static 'css/personnel_blog_hm.css' %}" type="text/css">
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
     url(r'^$', 'personnel_blog.views.home_page'),
     url(r'^admin/', include(admin.site.urls)),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()
以上是我的代码,有人能告诉我settigns.py文件或其他py文件有什么问题吗

是否需要在上述代码中进行任何其他附加设置


因此,任何人都可以调整我的代码并进行必要的更改,以便我能够继续前进,并在网页设计中迈出第一步……:)

base.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head>
    <link rel="stylesheet" href="{{ STATIC_URL }}css/personnel_blog_hm.css" type="text/css">
  </head>
  <body>
   <p>Hello !</p>
   <a href="/" target="_top">Home</a>
  </body> 
</html>  
{% load static %}

<link rel="stylesheet" href="{% static 'css/personnel_blog_hm.css' %}" type="text/css">
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
     url(r'^$', 'personnel_blog.views.home_page'),
     url(r'^admin/', include(admin.site.urls)),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()
url

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head>
    <link rel="stylesheet" href="{{ STATIC_URL }}css/personnel_blog_hm.css" type="text/css">
  </head>
  <body>
   <p>Hello !</p>
   <a href="/" target="_top">Home</a>
  </body> 
</html>  
{% load static %}

<link rel="stylesheet" href="{% static 'css/personnel_blog_hm.css' %}" type="text/css">
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
     url(r'^$', 'personnel_blog.views.home_page'),
     url(r'^admin/', include(admin.site.urls)),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()

settings.py中尝试

PROJECT_DIR  = os.path.dirname(__file__)
...
MEDIA_ROOT = os.path.join(PROJECT_DIR,'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR,'static')
STATIC_URL = '/static/'

我的
settings.py
文件通常与静态目录位于同一目录中

尝试将您的
STATICFILES\u DIRS
设置更改为

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

您的问题与此行有关:

return render_to_response("home_page.html")
Django的模板引擎需要两件事来正确呈现模板

  • 模板名称
  • 上下文变量
  • 上下文变量
    是一个键/值字典,列出了模板可用的所有变量

    render\u to\u响应
    快捷方式实际上可以接受

    你两个都错过了

    没有这些变量,模板就没有任何可用的变量。因此您的
    {{STATIC\u URL}}
    模板变量可能为空

    要更正,请尝试以下操作:

    from django.shortcuts import render_to_response
    from django.template import RequestContext
    
    def home_page(request):
        return render_to_response("home_page.html", {}, context_instance=RequestContext(request))
    

    保存设置在哪里?您使用的django版本是什么?@arulmr:django版本1.4.3生成的HTML是什么样子的?静态URL是否有值?异常类型:NameError异常值:名称“STATIC”未定义是的,现在导入后,我没有收到错误,但css不工作,因为在静态文件夹所在的目录中,设置文件与我在上面的项目结构中提到的相同,是的,我已经用您的代码编辑了PROJECT_DIR这是我的终端响应:Django版本1.4.3,使用设置“人员”博客。设置的开发服务器正在运行,请使用CONTROL-C退出服务器。[26/Feb/2013 11:39:59]“GET/HTTP/1.1”200 938[26/Feb/2013 11:39:59]“GET/css/Personal_博客_hm.css HTTP/1.1”404 2334[26/Feb/2013 11:40:00]“GET/HTTP/1.1”200 938[26/Feb/2013 11:40:01]“GET/css/personal_blog_hm.css HTTP/1.1”404 2334Yup在将调试值false改为true后终于成功了,非常感谢您抽出时间提供支持是的,我已经尝试并粘贴了上述代码,仍然无法工作,真的无法理解问题是什么…@shivakrishna你能告诉我url的响应吗?这是localhost:8000/static的结果------发生了服务器错误。请与管理员联系。:k我已使用上述代码尝试并编辑了我的视图文件,但结果仍然相同(css非工作体颜色未更改)。很抱歉,许多人试图帮助我,但这确实是一个非常严重的问题,不起作用,事实上,这个问题是否也会由于任何安装错误/问题而导致?如果您已经完成了上述操作,请检查生成的HTML并确保{{STATIC_URL}}被正确替换。如果是,请查看在浏览器中访问时发生的情况。它是否生成500错误?这是html和Response Page not found(404)请求方法中的一行:获取请求URL:否,使用web浏览器访问时看到的html。