zoukankan      html  css  js  c++  java
  • 【翻译】How To Tango With Django 1.5.4 第四章

    4、模板和静态媒体

    这章讲解模板引擎

    4.1使用模板

    前面我们讲解了view和url 映射,创建出了django 的web页面,现在就要将模板混合进去

    好的网站在布局上总是有许多重复的。django提供模板更快的达到这个设计目标。将逻辑和页面分离。这一章,会新建一个模板用来新建html页面。这个模板会通过一个django视图分发出去。我们会利用models动态生成数据,混合在模板里面,以期达到更深入的学习。

    4.1.1配置模板文件夹

    在tango_with_django_project下面新建一个templates 的文件夹。再新建一个rango的文件夹,形如tango_with_django_project/templates /rango,这个模板就是为了rango应用创建的。

    4.1.2动态路径

    创建好上述文件夹之后,还要告诉你的django工程你创建的文件夹在哪。所以在settings.py里面进行配置。

    先在文件头加上如下代码

    import os

    SETTINGS_DIR = os.path.dirname(__file__)

    然后在下面新增下面两端代码

    PROJECT_PATH = os.path.join(SETTINGS_DIR,os.pardir)

    PROJECT_PATH = os.path.abspath(PROJECT_PATH)

    设置好绝对路径之后,再添加如下代码指示templates文件夹的位置

    TEMPLATE_PATH = os.path.join(PROJECT_PATH,'template')

    然后配置TEMPLATE_DIRS元组

    TEMPLATE_DIRS = (

    TEMPLATE_PATH,

    )

    4.1.3添加一个模板

    你的模板文件夹的路径配置好之后,在templates/rango文件夹下面新建一个index.html文件,代码如下:

    <!DOCTYPE html>

    <html>

      <head>

        <title>Rango</title>

      </head>

      <body>

        <h1>Rango says...</h1>

        hello world!<strong>{{boldmessage}}</strong><br/>

        <a href="/rango/about/">About</a><br/>

      <body>

    </html>

    上述代码中有一个{{boldmessage}},这是一个Django模板变量,我们会为这个变量设置一个值去展示输出。

    为了使用这个模板,我们需要重新配置index(),这一次,不展示文字。而是展示模板,在rango/views.py里面添加如下代码

    from django.template import RequestContext

    from django.shortcuts import render_to_response

    更新index()视图,像下面这样

    def index(request):

      context = RequestContext(request)

    context_dict = {'boldmessage':"I am bold font from the context"}

    return render_to_response('rango/index.html',context_dict,context)

    重启服务器,输入http://127.0.0.1:8000/rango/,会见到如图所示效果

    4.2提供静态媒体

    4.2.1在tango_with_django_project下创建一个static的文件夹用来存放css,js等文件。

    static文件夹新建之后,得告诉django他的位置所在,就像刚才创建template一样。在setting.py文件里面,更新两个变量,一个STATIC_URL和STATICFILES_DIRS元组。首先新建一个变量存储static文件夹的路径。

    STATIC_PATH = os.path.join(PROJECT_PATH,'static')

    STATIC_URL = '/static/'

    STATICFILES_DIRS = (

      STATIC_PATH,

    )

     STATIC_URL定义了你的django应用访问静态资源的根路径,定义错误会引起很多麻烦。

    STATICFILES_DIRS指定你电脑上的static文件夹放置的位置。就像TEMPLATE_DIRS元组一样。

    4.3静态媒体文件和模板

    现在你已经可以通过你的模板访问那些静态文件了,修改index.html文件如下所示:

    <!DOCTYPE html>

    {% load static %}

    <html>

    <head>

      <title>Rango</title>

      <link rel="stylesheet" href="{% static "css/base.css" %}">

      <script src="{% static "js/jquery.js" %}"></script>

    <body>

      <h1>Rango says...</h1>

      hello world!<strong>{{boldmessage}}</strong><br/>

      <a href="/rango/about/">About</a><br/>

      <img src="{% static "rango.jpg" %}" alt="Picture of Rango"/>

    {% load static %}用来声明模板中可以使用static里面的静态文件,形如{% static "rango.jpg" %}

    </body>

    </head>

    </html>

    4.4.静态媒体服务器

    现在许多站点都会给他们的用户提供上传的功能,所以需要给你的django工程添加一个简单的媒体服务器。

    新建一个media文件夹,和static是同一个等级。新增该文件夹之后,修改tango_with_django_project/tango_with_django_project/下面的urls.py文件,添加以下代码

    from django.conf import settings

    #放在urlpatterns下面

    if settings.DEBUG:

      urlpatterns += patterns(

        'django.views.static',

        (r'media/(?P<path>.*)',

        'serve',

        {'document_root':settings.MEDIA_ROOT})

    )

    django.conf的settings模块允许我们访问工程的settings文件里的变量。可选条件就是用来检查django工程是否运行在DEBUG模式。如果是,那么下面那个URL会添加到上面的元组里面。这个pattern表示任何一个以media开头的URL请求,会被定向到django.views.static视图。这个视图会为你处理上传文件的调度。

    同样需要修改settings.py文件里面的配置,添加代码如下:

    MEDIA_URL = '/media/'

    MEDIA_ROOT = os.path.join(PROJECT_PATH,'media')

    4.5总结

    这一章,要学会怎么在视图里面使用模板,使用静态媒体文件,以及上传文件。

  • 相关阅读:
    一种解决h5页面背景音乐不能自动播放的方案
    VUE中的v-if与v-show
    setInterval(code, time)中code传递参数办法
    CSS——图片替换方法比较
    JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
    JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换
    JSON(一)——JSON与JavaScript的关系
    详解Ajax请求(四)——多个异步请求的执行顺序
    详解Ajax请求(三)——jQuery对Ajax的实现及serialize()函数对于表单域控件参数提交的使用技巧
    详解Ajax请求(二)——异步请求原理的分析
  • 原文地址:https://www.cnblogs.com/yingqml/p/6181659.html
Copyright © 2011-2022 走看看