【问题标题】:static url path setting in djangodjango中的静态url路径设置
【发布时间】:2013-01-20 05:52:37
【问题描述】:

我是 django 新手,目前我正在学习并尝试使用 django-cms 构建一个基本站点。下面是我的项目文件夹结构和代码文件

project_folder
    manage.py 
    main_folder 
         static
             css
                new-styles.css
             js
                new-styles.js
         templates                      
             base.html
             home.html
         media
             pic_1.gif 
             .....
         settings.py
         urls.py
         ....... 

settings.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/'
TEMPLATE_DIRS = (os.path.join(PROJECT_DIR,'templates'))
TEMPLATE_CONTEXT_PROCESSORS = (
       'django.contrib.auth.context_processors.auth',
       'django.core.context_processors.i18n',
       'django.core.context_processors.request',
       'django.core.context_processors.media',
       'django.core.context_processors.static',
       'django.core.context_processors.debug',
       'django.contrib.messages.context_processors.messages',
       'cms.context_processors.media',
       'sekizai.context_processors.sekizai',
)
......
.......

urls.py

from django.conf.urls import patterns, include, url
from django.conf import settings

urlpatterns = patterns('',
            url(r'^admin/', include(admin.site.urls)),
            url(r'^$', ...........),               
)

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

base.html

{% load cms_tags sekizai_tags menu_tags %}
<html>
  <head>
    <title>{%block "title" %}{% endblock %}</title>
    <link rel="stylesheet" href="{{ STATIC_URL }}css/new-styles.css">
  {% render_block "css" %}
  </head> 
  <body>
  {% cms_toolbar %}
    {% block "base_content" %}
    {% endblock %}
  {% render_block "js" %}  
  </body>
</html>

home.html

{% extends "base.html" %}
{% load cms_tags %}
{% block "title" %}Welcome to Services{% endblock %}
{% block "base_content" %}
  <p>Hi this is paragraph</p>
  <img src="{{ MEDIA_URL }}images/promo3.jpg" />
 {% placeholder "number_one" %} 
 {% endblock %}

new-styles.css

body {  
    padding:0px; margin:0px; margin-top:40px;
        background-color:#b0c4de;
     }
p {
      background-color:#e0ffff;
  }     

以上是我完整的项目结构和代码文件,但我的实际问题是new-styles.css 文件无法正常工作,即使我在文件中编写了一些 css 代码,它也没有链接到模板,所以任何人都可以请让我知道什么问题以及为什么base.html模板文件无法访问new-styles.css文件,是link标签中给出的路径错误还是settings.py中的路径设置错误?

【问题讨论】:

  • 考虑这个页面docs.djangoproject.com/en/dev/howto/static-files/…和这个docs.djangoproject.com/en/dev/howto/static-files/… 同时修改你的urlpatterns:` from django.contrib.staticfiles.urls import staticfiles_urlpatterns # ...你的URLconf的其余部分在这里... urlpatterns += staticfiles_urlpatterns() `
  • 是的,我已经按照教程浏览了每个链接并编写了代码,我在上面提到了整个代码,因为我无法找到为什么模板不能渲染/使用 css 文件?
  • 您是否在 settings.py 中将 'django.core.context_processors.static' 添加到您的 TEMPLATE_CONTEXT_PROCESSORS 中?看看这里docs.djangoproject.com/en/dev/howto/static-files/…
  • 是的,我用过它并编辑了上面的 settings.py 文件代码
  • 你是自己把文件放到静态文件夹还是用manage.py collectstatic做的?

标签: python css django django-cms


【解决方案1】:

urls.py

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

from project_name import settings

admin.autodiscover()

urlpatterns = patterns('',
    .....................
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()

【讨论】:

  • 您已经使用了static 和staticfiles_urlpatterns。你能详细说明一下为什么以及它们之间的区别吗?
猜你喜欢
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 2014-09-15
  • 2014-04-30
  • 2016-04-21
  • 1970-01-01
  • 2020-01-04
相关资源
最近更新 更多