当前位置:首页>正文

如何在django里使用静态文件 django中怎么载入css等静态文件

2023-04-27 04:32:54 互联网 未知

如何在django里使用静态文件

推荐用新版本的Django进行开发,可以肯定的是 Django 1.4 以后的版本应该都支持下面的设置
注意:Django 1.4 版本需要在 project/urls.py 底部加上:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns = staticfiles_urlpatterns()

Django 1.5 - Django 1.8 不需要添加上面的代码。
settings.py 静态文件相关示例代码及说明:

# Static files (CSS, JavaScript, Images)
STATIC_URL = /static/ # 当运行 python manage.py collectstatic 的时候# STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来# 把这些文件放到一起是为了用apache等部署的时候更方便STATIC_ROOT = os.path.join(BASE_DIR, collected_static) # 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT# 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以STATICFILES_DIRS = ( os.path.join(BASE_DIR, "common_static"), /path/to/others/static/, # 用不到的时候可以不写这一行) # 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件# 注意有先后顺序,找到了就不再继续找了STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder")

静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中。
当 DEBUG = True 时,Django 就能自动找到放在里面的静态文件。(Django 通过 STATICFILES_FINDERS 中的“查找器”,找到符合的就停下来,寻找的过程 类似于 Python 中使用 import xxx 时,找 xxx 这个包的过程)。
示例项目 dj18static, 应用 app 下面有一个 static 里面有一个 zqxt.png 图片:

dj18static├── blog│ ├── __init__.py│ ├── admin.py│ ├── migrations│ │ └── __init__.py│ ├── models.py│ ├── static # 应用 blog 下的 static, 默认会找这个文件夹│ │ └── 【zqxt.png】│ ├── tests.py│ ││ └── views.py├── common_static # 已经添加到了 STATICFILES_DIRS 的文件夹│ └── js│ └── 【jquery.js】│├── dj18static│ ├── __init__.py│ ├── settings.py│ ├── urls.py│ └── wsgi.py└── manage.py

当 settings.py 中的 DEBUG = True 时,打开开发服务器 python manage.py runserver 直接访问 /static/zqxt.png 就可以找到这个静态文件。
也可以在 settings.py 中指定所有 app 共用的静态文件,比如 jquery.js 等

STATICFILES_DIRS = ( os.path.join(BASE_DIR, "common_static"),)

把 jquery.js 放在 common_static/js/ 下,这样就可以 在 /static/js/jquery.js 中访问到它!

django中怎么载入css等静态文件

这个问题,在开发环境下和生产环境下解决的方法不一样:

开发环境下是在urls.py里面加条语句:比如
(r^static/(?P.*)$,django.views.static.serve,{document_root:settings.STATIC_ROOT}), 这样来做静态文件服务 生产环境下,需要把静态文件用collect指令收集起来,部署在专门的前端HTTP服务器比如nginx中,django直观动态请求即可。

django 怎么配置可以获取静态文件

这2个采用的语言和环境完全不同,所以不会有冲突

唯一需要注意的地方是,如果这2个应用都要暴露相同的端口时,需要做代理


如果你J2EE使用Tomcat作为 web容器,端口为80
如果你Django使用Apache做web容器,端口为80

这时候,就需要在一个代理web服务器,apache或nginx都可以

参考资料里有相关的配置可以参考,主要是基于域名的不同来分发到不同的内部服务器中

django发布在apache上,请问如何用apache解析静态文件

你可以通过Alias设置,修改httpd.conf, 添加
Alias /static/ /var/www/html/yourproject/static/

如果解决了您的问题请采纳!
如果未解决请继续追问

Django 怎么做静态化页面?

如果网站的流量过大,每次访问时都动态生成,执行SQL语句,消耗大量服务器资源,这时候可以考虑生成静态页面。

生成静态很简单,下面是一个例子:

只要在views.py中这样写就行了
from django.shortcuts import render
from django.template.loader import render_to_string
import os

def my_view(request):
context = {some_key: some_value}

static_html = /path/to/static.html

if not os.path.exists(static_html):
content = render_to_string(template.html, context)
with open(static_html, w) as static_file:
static_file.write(content)

return render(request, static_html)

上面的例子中,当用户访问时,如果判断没有静态页面就自动生成静态页面,然后返回静态文件,当文件存在的时候就不再次生成。

也可以用一个文件夹,比如在project下建一个 static_html 文件夹,把生成的静态文件都放里面,让用户像访问静态文件那样访问页面。
更佳办法
但是一般情况下都不需要生成静态页面,因为Django 有缓存功能,使用 Django Cache(缓存)就相当于把生成生成静态页面,而且还有自动更新的功能,比如30分钟刷新一下页面内容。

随便看看