zoukankan      html  css  js  c++  java
  • django静态文件处理

      从开始接接触python这门语言已有四年了,中间陆续的学习,又不断的忘记,所以基本上是没有系统的知识体系。但是挺喜欢这门简洁,强大的动态语言。最近自己私人有个项目要做,虽然之前一直是用java开发,但自己一个人做东西总想找点新鲜有激情的东西玩下,不用考虑团队知识的问题。所以毫不犹豫的选择用python。因为是个web项目,所以框架就用django(python的web框架也蛮多,听说web.py很轻量级)。其实学习任何新的东西都是这样,光看书是没用的,一定要多动手,多实践。好了,不扯了,回答这篇blog的重点上来。

      django对url和处理的具体代码的映射是在urls.py里配置的,如下:

    urlpatterns = patterns('',
    url(r
    '^$', 'mysite.views.home', name='home'),
    url(r
    '^mysite/', include('mysite.foo.urls')),
    url(r
    '^admin/', include(admin.site.urls)),
    )

      这很好理解。但是静态文件(css,js)怎么处理呢?,静态文件是不需要做上面的映射的。

      在要在你的app工程下面新建一个"static"的文件夹,把静态资源放到些文件夹里(目录结构如下图),就可以通过http://localhost:8000/static/images/1.jpg访问了。

      

      但是现在有个问题:如果把settings.py配置改下:

    DEBUG = False
    

      把DEBUG从True改成False后就会出现404(必需指定404和500错语页面,如上图的目录结构)找不到页面的错误。原因是DEBUG为True时django会默认帮我们处理静态文件,而为False的话还需要我们做点事。在全局usrs.py中加下如下代码:

    from django.conf import settings
    if settings.DEBUG is False:
    urlpatterns
    += patterns('',
    url(r
    '^static/(?P<path>.*)$', 'django.views.static.serve', {
    'document_root': settings.STATIC_ROOT,
    }),
    )

    修改settings.py中的设置:

    STATIC_ROOT = 'F:/testweb/static'

    以上设置是指定静态资源的绝对路径(根据你电脑的具体路径设置正确值),现在应该可以正确访问了。

    总结:

    • 在DEBUG为true时我们只需要建立static目录后,把静态资源放进去就可以访问。在DEBUG为False时需要我们手动指定静态资源目录,并配置映射关系。
    • 在正式环境下建议不采用django处理静态资源文件,这样对应用服务器压力较大,也不好做cdn。可以用ngix,apache部署静态资源。
  • 相关阅读:
    jQuery dataType指定为json的问题
    C# Post数据和接收简单示例【转】
    搜集的关于领域驱动设计(DDD)的理论知识
    WCF:(400) Bad Request
    关于SQL生成随机字符串
    如何通过禁用按钮避免jQuery.ajax重复请求
    注册自定义HTTP Handlers
    Node.js+Express on IIS
    iframe在IE下不能写cookie的解决
    node.js从全局目录里加载module
  • 原文地址:https://www.cnblogs.com/jcli/p/2180504.html
Copyright © 2011-2022 走看看