Django和CSS的一个简单示例
我是Django的新手,正在尝试设置一个非常简单的Django应用程序 现在,我读到了Django在线图书的第5章: 在我开始尝试数据库之前,我现在想做的就是在应用程序中添加一些简单的CS和J 所以问题是,我该怎么做?我只有一个应用程序,我只希望css文件夹中有一个main.css,js文件夹中有一个main.js 我查看了这一页,但在阅读了一次又一次之后,似乎没有太多的例子可供参考 如何导入样式表/css(是否有像CakePHP这样的助手?),将css和JS文件放在哪里,以及是否需要配置静态内容 更新:链接:没有多大帮助。主要是因为它不适合我,但我也特别不喜欢“if debug”部分。当我转到prod时会发生什么?为什么我要为prod和本地开发人员定义不同的媒体文件夹?它不应该是相对的,或者甚至是在同一个位置吗?要让它工作,您的静态文件需要位于Django内置的Django和CSS的一个简单示例,css,django,Css,Django,我是Django的新手,正在尝试设置一个非常简单的Django应用程序 现在,我读到了Django在线图书的第5章: 在我开始尝试数据库之前,我现在想做的就是在应用程序中添加一些简单的CS和J 所以问题是,我该怎么做?我只有一个应用程序,我只希望css文件夹中有一个main.css,js文件夹中有一个main.js 我查看了这一页,但在阅读了一次又一次之后,似乎没有太多的例子可供参考 如何导入样式表/css(是否有像CakePHP这样的助手?),将css和JS文件放在哪里,以及是否需要配置静态内
静态文件
应用程序可以访问的位置
要做到这一点,有两个步骤:
首先,在项目目录中(即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
staticfiles
应用程序处理您的请求
将django.contrib.staticfiles
放入您的settings.py安装的应用程序中。然后在应用程序目录中创建一个static
目录-soproject/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 :)