翻译How To Tango With Django 1.5.4 第四章

Posted 黑加仑妞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译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总结

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

以上是关于翻译How To Tango With Django 1.5.4 第四章的主要内容,如果未能解决你的问题,请参考以下文章

翻译How To Tango With Django 1.5.4 第四章

翻译How To Tango With Django 1.5.4 第一章

How to Find and Write VAG 7th Byte CS with Tango Key Programmer

We explain how Tango Conquered the World

How to start with Gradle?

Docker: How to configure Docker with devicemapper