最近在学习新的MVC框架Django,这是一个基于Python语言的Web开发框架。Django框架的好处就是能够以最小的代价构建和维护高质量的Web应用。而说到Web开发,不可避免的要使用到css和javascript文件。而怎样解决在Django框架中将这些静态文件引入,还有怎样在工程中配置模板路径的问题呢。在这里,博主将为大家详细的讲述一下方法。 首先,在你建立的工程的根目录中建立一个static文件夹,用来存放css,js和图片等静态文件。然后进入工程文件夹,打开settings.py文件,进行如下配置:
import os
STATIC_URL='/static/'
STATICFILES_DIRS = (
//动态的获取static文件的路径
os.path.join(os.path.dirname(__file__), '../static/').replace('\\','/'),
)
然后打开urls.py文件在url模式中做如下配置:
import settings
urlpatterns = patterns('',
url( r'^static/(?P<path>.*)$', 'django.views.static.serve',{ 'document_root': settings.STATIC_ROOT }),
#如果没有建static文件夹,而是直接在根目录下建立的JS,CSS和Images文件夹,就将下面的三行代码注释去掉,删除上方的代码
#( r'^js/(?P<path>.*)$', 'django.views.static.serve',{ 'document_root': settings.STATIC_ROOT }),
#( r'^css/(?P<path>.*)$', 'django.views.static.serve', { 'document_root': settings.STATIC_ROOT }),
#( r'^images/(?P<path>.*)$', 'django.views.static.serve', { 'document_root': settings.STATIC_ROOT }),
)
然后在我们的base模板或者有需求的模板中引入这些静态文件即可。
<link rel ="stylesheet" type = "text/css" href = "/static/css/base.css">
<link rel ="stylesheet" type = "text/css" href = "/static/js/jquery.css">
到这里,django引入静态文件的配置方法就完成了。
其实django中加载静态文件还可以其自带的app :staticfile。
- staticfiles:这是一个静态资源管理的app,django.contrib.staticfiles。老的版本中,静态资源管理一直是一个问题,部分app发布的时候需要带上静态资源,在部署的时候必须将每个app存在的static静态资源复制到同一个static目录。引入staticfiles之后,执行命令:python manage.py collectstatic 就可以方便的将所用到的app中的静态资源复制到同一目录。
- staticfiles的主要相关配置与分析
- STATIC_ROOT:运行上边提到的命令:python manage.py collectstatic 之后静态文件将要复制到的目录,这个目录只有在运行collectstatic时候才会用到,不能想当然的以为这个目录和MEDIA_ROOT的作用是相同的,否则在开发环境的时候可能一直无法找到静态文件。
- STATIC_URL:设置的static file的起始url,这个只是在template里边引用到,这个参数和MEDIA_URL的含义相同,
- STATICFILES_DIRS:和TEMPLATE_DIRS的含义差不多,就是除了各个app的static目录以外还需要管理的静态文件设置,比如项目的公共文件差不多。
- 各个app目录下的静态文件static/django会自动找到,这个点和app下的templates目录下差不多
- 在urls.py中加入静态文件处理的代码
from django.contrib.staticfiles.urls import staticfiles_urlpatterns # This will work if DEBUG is True urlpatterns += staticfiles_urlpatterns()
而让 Django加载模板的方法也是相当的简单,首先也是在工程的根目录下建立templates文件夹,用来存放模板文件。然后再settings.py的文件中找到TEMPLATE_DIRS,加入如下代码:
import os
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__),'../templates/').replace('\\','/'),
)