Django和CSS的一个简单示例

Django和CSS的一个简单示例,css,django,Css,Django,我是Django的新手,正在尝试设置一个非常简单的Django应用程序 现在,我读到了Django在线图书的第5章: 在我开始尝试数据库之前,我现在想做的就是在应用程序中添加一些简单的CS和J 所以问题是,我该怎么做?我只有一个应用程序,我只希望css文件夹中有一个main.css,js文件夹中有一个main.js 我查看了这一页,但在阅读了一次又一次之后,似乎没有太多的例子可供参考 如何导入样式表/css(是否有像CakePHP这样的助手?),将css和JS文件放在哪里,以及是否需要配置静态内

我是Django的新手,正在尝试设置一个非常简单的Django应用程序

现在,我读到了Django在线图书的第5章:

在我开始尝试数据库之前,我现在想做的就是在应用程序中添加一些简单的CS和J

所以问题是,我该怎么做?我只有一个应用程序,我只希望css文件夹中有一个main.css,js文件夹中有一个main.js

我查看了这一页,但在阅读了一次又一次之后,似乎没有太多的例子可供参考

如何导入样式表/css(是否有像CakePHP这样的助手?),将css和JS文件放在哪里,以及是否需要配置静态内容

更新:链接:没有多大帮助。主要是因为它不适合我,但我也特别不喜欢“if debug”部分。当我转到prod时会发生什么?为什么我要为prod和本地开发人员定义不同的媒体文件夹?它不应该是相对的,或者甚至是在同一个位置吗?

要让它工作,您的静态文件需要位于Django内置的
静态文件
应用程序可以访问的位置

要做到这一点,有两个步骤:

首先,在项目目录中(即
manage.py
文件旁边),您需要创建一个目录来保存静态文件。称之为“静态文件”

接下来,您需要让Django知道如何查找该目录,方法是在
settings.py
文件中的
STATICFILES\u DIRS
列表中指定该目录

大概是这样的:

STATICFILES_DIRS = [
    '/full/path/to/your/project/static_files/',
]
.
├── assets
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── models.py
│   ├── static
│   │   └── myapp
│   │       └── test.txt
│   ├── tests.py
│   └── views.py
├── myproj
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   └── wsgi.py
└── otherapp
    ├── __init__.py
    ├── models.py
    ├── static
    │   └── otherapp
    │       └── test.txt
    ├── tests.py
    └── views.py
在这个
static\u files
目录中,您可以创建您想要的任何结构,因此这就是您的
css
js
目录的所在

之后,您应该能够在模板中使用
{{{STATIC\u URL}}
标记来访问静态文件的基本URL

例如,您创建
project/static\u files/css/base.css
,您可以在模板中使用它,如下所示:

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/base.css" />

希望有帮助

编辑

使用
STATICFILES\u FINDERS
的默认设置,Django应该自动提供STATICFILES\u DIRS中列出的目录中的任何文件——有关详细信息,请参阅

如果这不起作用,请检查以下事项:

  • 您是否已将
    静态文件\u查找程序
    设置编辑为默认设置以外的其他设置
  • django.contrib.staticfiles
    是否在
    settings.py
    中的
    已安装应用程序列表中
  • 您是否正在使用Django的内置服务器(
    python manage.py runserver
  • 您的
    设置.py中是否有
    DEBUG=True
    ?如果不是,则需要将其设置为
    True
    或使用。在进行生产时,请查看

在Django 1.3中,静态文件的处理方式发生了显著变化(更好)。特别是静态文件(想想代码所需的CSS/JS/images)和媒体文件(想想用户在使用应用程序时上传的图像)之间的灵活区别。
staticfiles
应用程序处理您的请求

django.contrib.staticfiles
放入您的settings.py安装的应用程序中。然后在应用程序目录中创建一个
static
目录-so
project/app/static/
。在该静态目录中,根据需要组织支持文件(css/、js/、images/、icons/,等等)<默认情况下,code>staticfiles
将在static/目录中查找已安装的应用程序中列出的每个应用程序。不仅仅是你自己的,还有所有Django应用程序和第三方应用程序。(旁注:Django 1.4中的Admin移到这个范例,而在1.3中它仍然使用Admin_MEDIA_前缀)

staticfiles
应用程序知道所有应用程序中的所有静态/目录,但它需要收集所有这些内容才能提供服务。在开发中,当使用
manage.py runserver
时,它会为您处理。Django将运行您的站点并自动交付来自所有静态源的所有静态内容。(如另一个答案中所述,源在STATICFILES\u FINDERS设置中设置。)不使用runserver时,使用
manage.py collectstatic
将所有静态文件收集到
static\u ROOT
中定义的文件夹中。保持此目录为空。这是一个收集目的地。当然,您的web服务器需要配置为服务于此目录

现在还有一块-视图。这就是
静态URL
发挥作用的地方。在模板中引用静态文件时,最简单的方法是使用
{{static_URL}}
。默认情况下,Django使该变量可用于使用RequestContext的任何视图。这样做-


有关模板中引用静态URL的更多信息和方法,请查看类似问题。

如果您遵循django的指导原则,您可以大大简化您的生活

在示例代码中,在应用程序目录中创建一个名为static的文件夹。在此文件夹中,放置css文件

例如:

$ django-admin.py startproject myproject
$ cd myproject
myproject$ python manage.py startapp myapp
myproject$ mkdir myapp/static
myproject$ cd myapp/static
myproject/myapp/static$ nano style.css
在模板中:

确保将
myapp
添加到
settings.py
中的
INSTALLED_APPS
列表中。现在,当您使用内置开发服务器时,样式表将正确呈现

默认情况下,Django在已安装的应用程序中搜索
static
目录,对于当前版本的Django,默认情况下启用静态文件


Django示例具有路径
my_-app/static/my_-app/myimage.jpg
,其中 如果应用程序和项目名称相同,则会有点混淆

建议这样做,因为当您运行
collectstatic
收集所有静态文件时,同名文件将被覆盖
.
├── assets
│   ├── myapp
│   │   └── test.txt
│   └── otherapp
│       └── test.txt
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── static
│   │   └── myapp
│   │       └── test.txt
│   ├── tests.py
│   └── views.py
├── myproj
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   └── wsgi.py
└── otherapp
    ├── __init__.py
    ├── __init__.pyc
    ├── models.py
    ├── static
    │   └── otherapp
    │       └── test.txt
    ├── tests.py
    └── views.py
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'myapp/style.css' %}" />
   if DEBUG:
   STATIC_ROOT = "/PycharmProjects/don/admin/shopping/static/css"

    STATICFILES_DIRS =(
     #os.path.join(os.path.dirname(BASE_DIR),"static","static"),
     os.path.join(BASE_DIR, "static"),
    )
        from django.views.generic import TemplateView
        class HomeView(TemplateView):
               template_name = 'index.html'
       {% load staticfiles %}
        <link rel="stylesheet" href="{% static 'css/style.css' %}">
            from shopping.views import HomeView 
             from django.conf import settings
             from django.conf.urls.static import static
           urlpatterns = [
            url(r'^admin/', admin.site.urls),
             url(r'^$', HomeView.as_view())
          ]
        if settings.DEBUG:
       urlpatterns+=static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)

6>     python manage.py collectstatic  

have fun :)