我是Django的新手,我正在尝试建立一个非常简单的Django应用程序.
现在,我要读到Django在线书籍的第5章:http://www.djangobook.com/en/2.0/chapter05/
在我开始尝试数据库之前,我现在要做的就是将一些简单的CS和J添加到应用程序中.
所以问题是,我该怎么做?我只有一个应用程序,我只需要一个css文件夹中的main.css和一个js文件夹中的main.js.
我检查了https://docs.djangoproject.com/en/1.3/howto/static-files/#staticfiles-in-templates页面,但阅读和阅读后,似乎没有很多工作在例子方面.
如何导入stylesheets/css(是否有像CakePHP这样的帮手?),我在哪里放置CSS和JS文件,是否需要配置静态东西?
更新:链接:Django中的渲染CSS没有多大帮助.主要是因为它对我不起作用,但我也特别不喜欢"if debug"部分.当我搬到prod时会发生什么?为什么我的媒体文件夹对于prod和本地开发者的定义不同?它不应该是相对的,甚至不是同一个地方吗?
Bur*_*lid 26
如果您遵循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
Run Code Online (Sandbox Code Playgroud)
在您的模板中:
<link rel="stylesheet" href="{{ STATIC_URL }}style.css" />
确保添加myapp到INSTALLED_APPS列表中settings.py.现在,当您使用内置开发服务器时,您的样式表将正确呈现.
Django static默认搜索已安装应用程序中的目录,并且对于当前版本的django,默认情况下启用静态文件.
my_app/static/my_app/myimage.jpg如果您的应用程序和项目具有相同的名称,Django示例的路径会有点混乱.
建议这样做,因为当您运行collectstatic以收集所有静态文件时,将覆盖具有相同名称的文件.如果您myimage.jpg在另一个应用程序中调用了一个文件,它将被覆盖.在静态目录中提供应用程序名称将阻止这种情况,因为确切的目录结构将在您的STATIC_ROOT目录中复制.
一个简单的例子来说明这一点.如果你有一个带有两个应用程序的django项目,如下所示:
.
??? 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
Run Code Online (Sandbox Code Playgroud)
assets是你的STATIC_ROOT.现在当你运行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
Run Code Online (Sandbox Code Playgroud)
你看它也在创建目录.在您的模板中,您现在可以使用应用程序的"命名空间"来引用每个文件:{{ STATIC_URL }}/myapp/test.txt
对于您指向工作的示例,您的静态文件需要位于Django内置staticfiles应用程序可访问的位置.
实现这一目标有几个步骤:
首先,在项目目录中(即manage.py文件旁边),您需要创建一个目录来保存静态文件.称之为"static_files".
接下来,您需要让Django知道查看该目录,方法是STATICFILES_DIRS在settings.py文件列表中指定它.
像这样的东西:
STATICFILES_DIRS = [
'/full/path/to/your/project/static_files/',
]
Run Code Online (Sandbox Code Playgroud)
在该static_files目录中,您可以创建所需的任何结构,这样您css和js目录就可以到达.
之后,您应该能够使用{{ STATIC_URL }}模板中的标记来访问静态文件的基本URL.
因此,比方说,例如,您创建project/static_files/css/base.css,您将在模板中使用它,如下所示:
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/base.css" />
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
编辑
使用默认设置STATICFILES_FINDERS,Django应自动提供STATICFILES_DIRS中列出的目录中的任何文件 - 有关详细信息,请参阅文档.
如果这不起作用,请检查一些事项:
STATICFILES_FINDERS设置编辑为默认设置以外的其他设置?django.contrib.staticfiles在你的名单INSTALLED_APPS中settings.py?python manage.py runserver)吗?DEBUG = True你的settings.py?如果没有,你要么需要将其设置为True或使用该insecure选项(python manage.py runserver --insecure).进入生产阶段时,请查看collectstatic命令.建议的方法再次改变(至少从我认为的Django 1.5).
在模板的顶部放置:
{% load staticfiles %}
Run Code Online (Sandbox Code Playgroud)
然后,使用相同的目录结构(myapp/static/myapp/style.css):
<link rel="stylesheet" href="{% static 'myapp/style.css' %}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38346 次 |
| 最近记录: |