今天同样是参考追梦人物老师博客的学习笔记。
配置请求路径
项目中的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进入主页
显示主页路径已经配置到了我们设置的模板页了。