15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Django-从0到1写出一个全面的网页(1)模板和静态图片

Django-从0到1写出一个全面的网页(1)模板和静态图片

时间:2023-06-08 13:39:02 | 来源:网站运营

时间:2023-06-08 13:39:02 来源:网站运营

Django-从0到1写出一个全面的网页(1)模板和静态图片:

前需准备

  1. 请看我的第一篇文章,用Django写出最简单的网页。可以带着大家从无到有,写出一个含有"Hello, world!"的基本网页。最基础的下载等基本操作都在这篇文章了,本系列文章属于更“高级”一点,所以不会再花时间在这方面了。
2. How to tango with Django 1.7。这是一本英文写的手把手教你使用Django的好书,旧版本是online免费的,新版本都需要付费。本系列文章就是根据这本书提供的步骤所写,因为1.7版本很老旧,我也费了很大的功夫更新了一番。大家要是有时间,也推荐好好翻阅一下这本书。

3. django 官网。大家要是还有更多空闲时间想继续深入了解,官网必不可少。

本文目标

了解template engine 模板引擎和 如何在自己的网页中加入静态图片。


如果你已经读完我的第一篇Django 基础文章并且每步都跟着做的话,我确信你应该已经有了你的Django作为框架的网页了。但那只是一些view文件,把一些URL 映射组合在了一起。今天这篇文章带大家深入了解怎么样把模板和先前的组合在一起。

1. 配置(configure)模板目录

如果我们想让模板能够顺利使用,我们先得建立一个目录储存我们所有的模板文件。

在你的Django 主文件夹/目录(我的是<workspace>/zhou/)中,新建一个文件夹,我们就叫它templates 吧。然后在这个新的templates 文件夹中,再新建一个文件夹,为了向前期准备2中的书本致敬,我们叫它rango。而在<workspace>/zhou/templates/rango/里,就会存放我们所有的和rango 程序相关的模板了。

现在为了让我们的Django 主项目知道我们的模板位置,让我们打开文件夹<workspace>/zhou/zhou中的settings.py 文件,在其中的TEMPLATES 中的‘DIRS' 里加入我们新建的templates文件夹所在的路径。

TEMPLATES = [ { 'DIRS': ['<workspace>/zhou/', ], }]


2. 动态路径

硬编码 (hard-coding)路径问题的解决方案是使用内置的Python函数来自动计算模板目录所在的路径。这样,无论我们将Django项目的代码放在文件系统的哪儿,我们都可以获得绝对路径(absolute path, 绝对路径有称为完整路径,它指向文件系统中的相同位置而不考虑当前工作目录)。这也意味着我们的项目代码变得更加可移植 (portable)。

在新版本的Django 的settings.py 文件中, 我们有一个已经内置的变量叫做BASE_DIR

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))这是用来存储指向你项目中settings.py 模块所在目录的路径。

还是在settings.py 文件中,

TEMPLATES = [ { 'DIRS': ['<workspace>/zhou/', TEMPLATE_PATH, BASE_DIR + '<workspace>/zhou/templates/rango', ], }]什么是TEMPLATEPATH呢?我们可以在settings.py 文件的开头,BASE_DIR 下面阐明。

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates')


3. 添加一个模板

在我们的<workspace>/zhou/templates/rango 目录中,新建一个叫做 index.html的文件,在文件中放入HTML代码。

<!DOCTYPE html><html> <head> <title>Eva</title> </head> <body> <h1>Eva says...</h1> hello world! <strong>{{ boldmessage }}</strong><br /> <a href="/rango/about/">About</a><br /> </body></html>这段HTML代码很简单,标题是Eva, 主体标题是Eva says....., 内容是hello world!,大写加粗。然后是一个现在还用不到的about链接。

现在回到我们的<workspace>/zhou/eva (就是先前在创建app时候你自己取的名字,我在我的第一篇基本文章中使用的代码是

python3 manage.py startapp polls 我这里用的是

python3 manage.py startapp eva

文件夹中,打开views.py 文件,确认一下下面这段代码在文件开头。一般默认是早就在了的。

from django.shortcuts import render现在在views.py 文件中,更新下index() view 程序

def index(request): # Construct a dictionary to pass to the template engine as its context. # Note the key boldmessage is the same as {{ boldmessage }} in the template! context_dict = {'boldmessage': "I am bold font from the context"} # Return a rendered response to send to the client. # We make use of the shortcut function to make our lives easier. # Note that the first parameter is the template we wish to use. return render(request, 'rango/index.html', context_dict)记得保存哦!

好了,现在让我们来看看我们的网页是怎么样的了。在自己的浏览器输入http://127.0.0.1:8880/eva/ 这里的eva是我的app 名字,需要更改为你自己的app名。

如果一切顺利的话,你将会看到下面的页面。

YAY!

接下来就是怎么上传图片到网页了。




4. 配置(configure)静态媒体目录

标题中所说的静态媒体在我们的文章中就是指图片。

和配置模板目录一样,如果我们想让静态媒体能够顺利使用,我们先得建立一个目录储存我们所有的图片文件。

在我们的主目录,<workspace>/zhou/中,创建一个新文件夹,static,并在其中再创一个新文件夹,images。

然后我们在images文件夹中放入一张自己喜欢的图片吧。我在这里放的是django同名steam 游戏图片。

好了,现在我们得让django知道我们有了一个static 目录;就像我们在创建templates 目录让django知道路径一样。在我们的<workspace>/zhou 文件夹里settings.py 文件中,我们需要放入两个新变量,STATIC_URL 和 STATICFILES_DIRS 元组(tuple)。应该是在文件的末尾

# Static files (CSS, JavaScript, Images)# Managing static files (e.g. images, JavaScript, CSS)STATIC_PATH = os.path.join(BASE_DIR,'static')STATIC_URL = '/static/' #这个应该已经有了STATICFILES_DIRS = ( STATIC_PATH,)这里的STATIC_URL 代表了基本的URL,当你的服务器运行时候,你的Django 程序会发现你的静态媒体文件。

STATICFILES_DIRS 允许我们指定新建 static目录的位置。




5. 静态媒体文件和模板

现在我们打开我们先前创建的index.heml 文件,修改一下

<!DOCTYPE html>{% load staticfiles %}<!-- 新加第一行 --><html> <head> <title>Eva</title> </head> <body> <h1>Eva says...</h1> hello world! <strong>{{ boldmessage }}</strong><br /> <img src="{% static "images/django.jpg" %}" alt="Picture of Django" /> <!-- 新加第二行 --> <a href="/rango/about/">About</a><br /> </body></html>新加的第一行让我们的Django 模板系统知道我们再用静态媒体。

新加的第二行说明这是我们要用的图片,alt是以防万一有啥问题图片显示不出,也能有文字显示。

让我们保存下文件,刷新下网页。一切都对的话,我们将看到下面的页面。

下面这段代码演示了我们怎么子使用JavaScript, CSS,我们现在看看就好了。

<!DOCTYPE html>{% load staticfiles %}<html> <head> <title>Eva</title> <link rel="stylesheet" href="{% static "css/base.css" %}" /> <!-- CSS --> <script src="{% static "js/jquery.js" %}"></script> <!-- JavaScript --> </head> <body> <h1>Eva says...</h1> hello world! <strong>{{ boldmessage }}</strong><br /> <img src="{% static "images/django.jpg" %}" alt="Picture of Django" /> <!-- New line --> </br> <a href="/rango/about/">About</a><br /> </body></html>我顺便使用了</br> 空了一格,让about 链接格式显得更好看一点。




6. 静态媒体服务器

现在我们可以在网页上显示静态图片了,下一步就是怎么让网页的用户可以在未来上传图片。这一部分用来展示如何向Django 项目添加一个简单的开发媒体服务器。开发媒体服务器可以与我们将在登录教程中讲提到的文件上传教程一起使用。

那么我们怎么建立一个简单的开发媒体服务器呢?首先让我们在主目录建立一个新文件夹,media。接着我们在<workspace>/zhou/zhou 中的 urls.py 文件中添加如下代码。

from django.conf import settingsfrom django.conf.urls.static import staticif settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)当你的urls.py文件更新完成以后,我们需要修改一下settings.py 文件;我们需要设置两个变量的值,MEDIA_URL 和 MEDIA_ROOT

#Media MEDIA_URL = '/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'media')一切顺利的话,我们需要做的就是把一张图片放入我们创建的 media文件夹里,然后在浏览器中输入

http://127.0.0.1:8880/media/django.jpg我这里用的port 是8880,只要保持和你运行主程序相同的port 就可以。如果能看到图片,恭喜你,成功啦!

现在你只需要温习一下这篇文章,并期待我们的下一篇 Django-从0到1写出一个全面的网页(2)模型和数据库。




如果你觉得我的文章有用,顺手点个赞,关注下我的专栏或则留下你的评论吧!















关键词:模板,和静,图片

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭