Django学习之旅(三)Http请求及视图处理

 今天同样是参考追梦人物老师博客的学习笔记。

配置请求路径

项目中的urls.py是专门处理路径请求的文件,而项目路径(django1)下的urls.py是整个项目的路径处理文件,为了便于不同的应用独立处理自己的请求路径,我们在应用blog路径下新建urls.py文件,配置请求路径。

项目结构变为:

在blob/urls.py中配置当前应用的请求路径:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

path第一个参数为应用中配置的请求路径,第二个参数为处理函数(在后文进行配置),第三个参数为处理函数的别名。

为了将当前应用的请求路径告诉项目文件,在django1/urls.py中配置:

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]

include用于在项目的路径中包含应用的请求路径文件,第二个path()函数中,第一个参数 ' ' 是应用路径的前缀,即应用中的处理函数的最终路径为:' '+应用中的配置路径

编写处理函数

应用下的views.py函数专门用于编写处理函数,在blog/views.py中编写index处理函数:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.


def index(request):
    return render(request,'blog/index.html', context={
        'title':'我的博客首页',
        'welcome':'欢迎访问我的博客首页'
    })

request为Http请求对象 ,处理函数接受请求后必须返回一个Http响应。其中render就是三大Http响应方式之一,需要将request参数传递进去,然后加载一个html模板,并通过context给模板传入变量值。

其余两个Http响应方式分别为HttpResponse()

HttpResponse():  返回文本,参数为字符串,字符串中写文本内容。如果参数为 字符串里 含有 html 标签,也可以渲染

redirect()

redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。如:
return redirect("/index/")

模板 

用模板展示处理函数响应的数据,在manage.py同目录下新建文件夹templates,添加应用路径blog,在templates/blog下新建index.html文件,用来展示views/index函数响应的数据。

目录结构如下: 

并将模板目录注册到项目中,在setting.py文件中的TEMPLATES中的“DIRS”字段,将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',
            ],
        },
    },
]

其中BASE_DIR表示总的项目路径,即 ~/django1 

配置完成后就可以在templates/blog/inex.html中展示响应的数据了

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{{ title }}</title>
</head>
<body>
<h1>{{ welcome }}</h1>
</body>
</html>

模板中的{{ title }} 等值就是被context中的值替换的变量。即{ title }}被替换成了 context 字典中 title 对应的值,同理 {{ welcome }} 也被替换成相应的值。

重新打开请求路径127.0.0.1进入主页

 显示主页路径已经配置到了我们设置的模板页了。

文章参考:Django 的接客之道_HelloDjango - Django博客教程(第二版)_追梦人物的博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值