Django静态文件配置-阿里云开发者社区

开发者社区> 吞吞吐吐的> 正文

Django静态文件配置

简介:
+关注继续查看

本文目的

最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘。我当前使用的版本是django v1.4.3。

吐槽:django的版本不兼容是个大问题,网上搜索相关问题时,解决方案到是一大推,但是均没有标注版本,导致均不能适用当前版本,走了不少弯路。

 

开发环境配置

需要下面几个步骤

1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等

2. 确保settings.py中的INSTALLED_APPS中包含django.contrib.staticfiles

3. 设置settings.py中的STATIC_URL的值为“/static/”

4. 在模版中使用{{ STATIC_URL }}作为静态文件路径前缀。比如纯在图片文件your_app/static/img/logo.png,那么应用代码为<img src=”{{ STATIC_URL }}img/logo.png”>

5. 渲染模版的Context对象需要换成RequestContext,否则模版中无法引用到STATIC_URL对应的值。

上面的操作步骤参见官方文档:https://docs.djangoproject.com/en/dev/howto/static-files/

特别注意:按照上述设置,settings.py中的DEBUG选项必须设置为True,否则'/static/'无法映射到静态文件目录。参见这里:http://stackoverflow.com/a/4566907/1114397

 

 

生产环境配置

我的发布环境是apache,这里只介绍相关配置。

使用apache的静态发布配置,而不使用django的配置,这也是django推荐的方式,因为django认为静态文件配置的方法交给服务器,会更有效。你所需要做的就是在apahce的配置文件中添加一个alice,如下

Alias /static "/your_wsgi/your_app/static"

# 注意结尾都没有斜杠,全路径也没有。

# 如果alias后面的值有反斜杠结尾,那么全路径也需要有,保持一致

“/static”对应django settings.py中配置的STATIC_URL的值。然后添加directory选项,配置相关目录的权限。Apache 2.4版本开始,对directory配置做出了调整,所以这里需要注意,如下:

 

Apache v2.4及以上版本,

<Directory "/your_wsgi/your_app/static "> 
    Require all granted 
</Directory>

 

Apache v2.4以下版本

<Directory "/your_wsgi/your_app/static "> 
    Options Indexes FollowSymLinks 
    Order allow,deny 
    Allow from alli
 
</Directory>

注意上面红色部分。

Tips:如果访问静态图片遇到403错误,此时说明路径配置成功,离成功不远了。只是路径权限没有配置正确,这时可以看看apahce错误日志,如果出现“client denied by server configuration”,说明是directory的权限没有配置正确,可以查看自己的apache版本,然后做出响应配置。

 

希望本文对你有用!


本文转自bourneli博客园博客,原文链接:http://www.cnblogs.com/bourneli/archive/2013/01/21/2869327.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9495 0
Django 下载文件返回中文名
Django下载中文名文件: from django.utils.http import urlquote from django.http import HttpResponse content = export.
931 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13183 0
python3 django配置数据库(mysql)
python3 django配置数据库(mysql) python3 下的mysql驱动 django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.
3094 0
4852
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载