广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
4.2.1 在视图中进行模板渲染
HTML只是用来定义页面的结构,在django服务器中进行页面渲染,主要是指调用模型层的数据来生成不同内容的页面。 在第5章的内容中,会对模型进行详细介绍。在视图中进行模板渲染之前,需要先配置好模板目录,以存放模板文件,模板文件中使用到的静态文件(图片等),可以存放到指定的静态目录中。django提供了便捷的render函数,可以方便地在视图中进行模板渲染。
4.2.2 配置模板目录
与项目有关的配置,都是在项目中的settings.py中进行定义的,例如模板目录的配置,静态目录的配置。在1.5节中,对模板目录的配置和django应用的注册进行了讲解,现在我们重新回顾下与模板目录配置有关的操作:
(1) 打开chips目录中的settings.py
找到与模板配置相关的两个全局变量,分别是:BASE_DIR,TEMPLATES。BASE_DIR表示服务器的根目录, TEMPLATES变量用来配置Django模板的meta信息,例如模板引擎,模板文件的存放路径等。
(2) 创建templates目录,存放模板文件
在Django-project中创建templates目录,并在settings.py中进行模板路径的配置。
打开settings.py,修改全局变量TEMPLATES。更新后的代码为:
TEMPLATES = [ { 'BACKEND': 'Django.template.backends.Django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR,"templates")], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'Django.template.context_processors.debug', 'Django.template.context_processors.request', 'Django.contrib.auth.context_processors.auth', 'Django.contrib.messages.context_processors.messages', ], }, }, ]
在以上代码中对DIRS属性进行了修改,将根目录下的templates目录配置为模板文件的存放目录。由于BASE_DIR指的是Django服务器的根目录路径,故通过代码 os.path.join(BASE_DIR,"templates"),可以获取templates目录的绝对路径。
4.2.3 配置静态目录
静态目录的配置同样是在settings.py中进行定义的。现在读者按照以下步骤来进行操作:
(1) 打开chipscoco目录中的settings.py
找到与模板配置相关的两个全局变量:BASE_DIR,STATICFILES_DIRS。如果脚本中找不到STATICFILES_DIRS,可以自行定义同名的全局变量,以进行静态目录的配置。BASE_DIR表示服务器的根目录,STATICFILES_DIRS是一个元组类型,可以用来定义静态文件的查找目录。静态目录配置实例:
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static/'), )
在上文的代码中,将根目录下的static目录配置为静态文件的查找目录。读者可以根据实际开发情况,配置一个或多个静态文件目录。
(2) 在模板文件中引用静态文件
在模板文件中引用静态文件前,需要先加载静态资源。在模板文件加载静态资源的代码:
{% load static %}
该行代码必须放在静态文件引用的代码前面,否则Django会抛出模板语法错误的异常信息。
在settings.py中{%%}符号是Django模板语言提供的特殊符号,以定义相关的代码逻辑, 在模板中使用{{}}符号可以引用在视图层中传递过来的变量,对于Django模板语言,会在4.3节中进行详细介绍。
在模板文件中引用静态文件,可以使用django模板语言中的static函数。语法形式为:
{%static 'path_of_static_file'%}
path_of_static_file表示静态文件相对于静态目录的路径。静态文件引用举例:
<img src="{%static 'images/logo.png'%}" />
假设在settings.py中配置的静态目录为static,则<img src="{%static 'images/logo.jpg'%}" /> 被渲染后的html代码为:
<img src="/static/images/logo.png" />
/static/images/logo.jpg是相对于服务器根目录的路径,其完整的http url为:
http://127.0.0.1:8080/static/images/logo.png
以上的http url是假设django服务器运行在本地,且http端口为8080。
4.2.4 render函数
django中提供了内置函数render, 可以在视图中进行模板渲染。使用render函数,需要从django.shortcuts 中进行导出。render函数的参数及用法:
参数名 | 描述 |
request | HttpRequest对象,用来生成对客户端的响应 |
template_name | 字符串类型,表示模板文件的名称 |
context | 字典类型的对象,用来对模板进行数据渲染,默认为空 |
content_type | 字符串类型,表示MIME对象,默认为'text/html' |
status | 整型,表示响应的http状态码,默认为200 |
using | 使用的模板引擎名称,默认为Django内置的模板引擎 |
在render函数中,需重点关注的是context对象,通过context对象可以传递数据给模板,以生成不同内容的页面。context是一个字典类型,context中的键名可以在模板中作为变量进行直接引用。
context参数举例:
{'title':"Django的美妙爵士乐"}
则在模板中,可以通过{{title}}来进行引用,输出的值为"Django的美妙爵士乐"。render函数的返回值是一个HttpResponse对象,所以可以直接在函数视图或类视图中进行使用。
在视图中,必须返回一个HttpResponse对象或HttpResponse的子类对象。
4.2.5 在视图中渲染模板
在以上的内容中,我们在项目中配置了模板目录,静态目录,以及学习了render函数的用法。现在请读者按照以下步骤来进行操作,根据不同的查询请求,来响应不同的博客页面:
(1) 打开blog目录下的urls.py, 定义url与blog视图的路由
urls.py更新后的代码:
from django.contrib import admin # 在url中使用正则表达式,需要使用re_path函数 from django.urls import path,re_path import blog.views as blog urlpatterns = [ path('admin/', admin.site.urls), path('', blog.Home.as_view()), path('arithmetic/', blog.arithmetic), path('html/', blog.Html.as_view()), # 新增的代码,在url中使用正则表达式 re_path('blog/(\d+).html', blog.blog), ]
在urls.py的代码中,re_path函数中的正则表达式(\d+),将作为参数传递至视图中。
(2) 打开chipscoco目录下的views.py, 定义blog视图
blog视图代码:
def blog(request, page_id): if request.method == "GET": # 将页面的id号传递至模板中,page_id参数对应于正则表达式中的\d+ return render(request, "blog/blog.html",{"page_id": page_id})
(2) 在templates目录中创建blog.html
templates目录位于根目录下,blog.html中的代码为:
{% load static %} <html> <head> <title>Django的美妙爵士乐</title> </head> <body> <h1>这是博客的{{page_id}}.html页面</h1> <img src="{%static 'images/Django.jpg'%}"> </body> </html>
在模板中使用{{page_id}}, 来引用从视图中传递的page_id变量, django根据不同的page_id值,来生成不同内容的页面。模板中使用到的django.jpg:
(3) 配置模板目录以及静态目录
模板目录为根目录下的templates目录,静态目录为根目录下的static目录。static目录的目录结构:
└── static
├──images
│ ├── django.jpg
(4)在浏览器中进行测试
使用浏览器进行测试时,需要先启动Django服务器:python manage.py runserver 8080
打开浏览器,在地址栏中输入http://127.0.0.1:8080/blog/1314.html:
在地址栏中输入http://127.0.0.1:8080/blog/7878.html:
在进行测试时,在html页面名中必须输入合法的数字前缀,否则Django会抛出页面不存在的错误异常。
同学们可以改下urls.py中的正则表达式,以支持任意字符形式的名称前缀。
4.2.6 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: