CSS在Django应用程序中不起作用,不知道有什么问题

时间:2017-03-01 16:49:20

标签: python django django-staticfiles

我知道这是一个重复的问题,但我无法找到任何可以让我运行静态文件的答案。我使用的是Django版本:1.10.5和python版本:3.4.3 ......

我也阅读了官方文档,没有解决我的问题的运气......

以下是我的项目结构:

myproject4
    /myapp/
        /__pycache__/
        /migrations/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py
    /myproject/
        /__pycache__/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    /static/
        /css/
            hpage.css
            robot.css
        /images/
            -- Images --
        /js/
            -- JavaScript Files --
    /template/
        hello.html
    manage.py

以下是我所尝试的内容:

{% load staticfiles %}

我的hello.html页面,位于顶部,

<link href="{%static 'css/hpage.css' %}" rel="stylesheet" />
<link href="{%static 'css/robot.css' %}" rel="stylesheet" />

用于在hello.html中链接我的CSS文件(它使用2个CSS文件)。

我已经尝试{{ STATIC_URL }}做同样的事情以及我应该做的必要事情,但在那里找不到运气。

当我使用<style> </style>标签时,css工作正常,但这不是我想要的。

settings.py:

DEBUG = False

ALLOWED_HOSTS = ['*']

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

#Other stuffs go here

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

urls.py:

from django.conf.urls import url,include
from django.contrib import admin
from myapp.views import hello,user_profile
from myapp import views
admin.autodiscover()

urlpatterns = [
    url(r'^admin/$', admin.site.urls, name='admin'),
    url(r'^hello/$', views.hello, name='hello'),
    url(r'^hello/user_profile/', views.user_profile, name='user_profile'),
]

views.py:

from django.shortcuts import render, render_to_response
from django.template.context import RequestContext

def hello(request):
      return render_to_response('hello.html')

def user_profile(request):
      return render_to_response('user_profile.html')

请指导我出错的地方......

提前谢谢你:)

编辑:在我的 settings.py 文件DEBUG = False中,因为我有一个名为 404.html 的文件我的错误页面是默认的。

2 个答案:

答案 0 :(得分:0)

urls.py进行更改,如下所述。并查看documentation以获取参考号。

from django.conf.urls.static import static

urlpatterns = [
    rl(r'^admin/$', admin.site.urls, name='admin'),
    url(r'^hello/$', views.hello, name='hello'),
    url(r'^hello/user_profile/', views.user_profile, name='user_profile'),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

答案 1 :(得分:0)

以下是我将Dj包含在Django项目中的步骤:

  1. 首先,我已经在settings.py中添加了

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static")
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
    
  2. urls.py(app文件夹)中的第二个“

     urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    
  3. 复制了Project文件夹中的所有CSS文件(与manage.py相同的级别)
  4. 在模板中包含/声明CSS(我将其包含在base.html中)

    <head>
         {% load static %}
         <link rel="stylesheet" href="{% static 'assets/css/bootstrap-theme.css' %}" media="screen" >
         <link rel="stylesheet" href="{% static 'assets/css/main.css' %}">
         <link rel="stylesheet" href="{% static 'assets/css/style.css' %}">
    </head>
    
  5. 执行命令

    python manage.py collectstatic
    
  6. 并重新加载/重新启动浏览器或删除缓存。