Django框架(5) —— 视图、模版

视图

在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,视图函数处理之后,要给浏览器返回页面内容。

视图函数的使用

使用视图时需要进行两步操作:

  1. 定义视图函数
  2. 配置URLcont

定义视图函数

视图函数定义在booktest/views.py中。

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

# 定义视图函数,一个url地址对应一个视图函数
def index1(request):
    return HttpResponse("hello Django")

视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,hello Django就是返回给浏览器显示的内容。

配置URLcont

查找视图的过程

请求者在浏览器地址栏中输入url,请求到网站后,获取url信息,然后与编写好的URLconf逐条匹配,如果匹配成功则调用对应的视图函数,如果所有的URLconf都没有匹配成功,则返回404错误。

一条URLconf包括url规则、视图两部分:

  • url规则使用正则表达式定义。
  • 视图就是在views.py中定义的视图函数。

需要两步完成URLconf配置:

  • 1.在应用中定义URLconf
  • 2.包含到项目的URLconf中

1.在booktest/应用下创建urls.py文件,定义代码如下:

# -*- coding: utf-8 -*-
from django.conf.urls import url
from booktest import views

# 包含所有的url路由配置
# 进行url配置时:1、严格匹配开头和结尾;2、在url末尾加/
urlpatterns = [
    url(r'^index1/$', views.index1),
]

2.包含到项目中:打开test1/urls.py文件,为urlpatterns列表增加项如下

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('booktest.urls')),  # 包含booktest应用的urls文件
]

在浏览器输入http://127.0.0.1:8000/index/,展示如下:

 

url配置的目的是让建立url和视图函数的对应关系。url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数。

url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作。

配置url时,有两种语法格式:

a) url(正则表达式,视图函数名)

b) url(正则表达式,include(应用中的urls文件))

工作中在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系。

url匹配的过程

在项目的urls.py文件中包含具体应用的urls.py文件,应用的urls.py文件中写url和视图函数的对应关系。

当用户输入如http://127.0.0.1:8000/aindex时,去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到项目的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello python给浏览器来显示。


模板

模板不仅仅是一个html文件。

1、创建模板文件夹

在项目目录下创建templates文件夹,为应用booktest下的视图index创建模板index.html目录结构如下:

index.html模版内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板文件</title>
</head>
<body>
<h1>这是一个模板文件</h1>
使用模板变量:<br/>
{{ content }}<br/>
使用列表:<br/>
{{ list }}<br/>
for循环:<br/>
<ul>
    {% for i in list %}
        <li>{{ i }}</li>
    {% endfor %}
</ul>
</body>
</html>

2、配置模板目录

在test1/settings.py文件,设置TEMPLATES的DIRS值

BASE_DIR为项目绝对路径,在该文件最上方获得

3、使用模板文件

打开booktst/views.py文件,调用上面定义的模板文件

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader, RequestContext

# Create your views here.

# 定义视图函数,一个url地址对应一个视图函数
def index(request):
    # return HttpResponse("hello Django")

    """使用模版文件"""
    # 1、加载模板文件,去模板目录下面获取html文件的内容,得到一个模板对象
    temp = loader.get_template('booktest/index.html')

    # 2、定义模板上下文,向模板文件传递数据
    context = RequestContext(request, {'content': 'hello', 'list': list(range(1, 10))})

    # 3、模板渲染,得到一个标准的html内容。
    res_html = temp.render(context)

    # 4、返回HttpResponse
    return HttpResponse(res_html)

还有一种写法,render封装的方法,效果一样,代码更简介:

from django.shortcuts import render


def index(request):
    
    return render(request, 'booktest/index.html', {'content': 'hello', 'list': list(range(1, 10))})

在浏览器输入http://127.0.0.1:8000/index/,展示如下图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轨迹|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值