使用Django创建网页的过程分为三个阶段:
定义URL; 编写视图; 编写模版。
定义URL模式,URL模式描述了URL是如何设计的,让Django知道把浏览器请求与网站URL如何正确匹配,以确定返回哪个网页。(用到正则表达式)
每个URL被映射到对应的视图,视图函数获取并且处理网页需要的数据。然后调用一个模板,模板可以生成一个网页,通常为html文件。
3.1 映射URL
修改learning_log/urls.py文件:
变量urlpatterns包含了项目中应用程序的URL,添加代码来包含模块learning_logs.urls(要用include), 加上实参namespace。
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('learning_logs.urls', namespace='learning_logs')),
]
默认的urls.py在文件夹learning_log中,现在需要在learning_logs中创建另外一个urls.py文件(这是为什么???)
函数url(),用于将URL映射到视图,接受三个实参,第一个是正则表达式,第二个指定要调用的视图函数,第三个参数指定URL模式的名称。
关于正则表达式另外详细说明。
"""定义learning_logs的URL模式"""
from django.conf.urls import url
from . import views
urlpatterns = [
# 主页
url(r'^$', views.index, name='index'),
]
app_name = 'learning_logs'
注意这里要加app_name = ‘learning_logs’,和learning_log/urls.py中的namespace对应上,否则会报错learning_logs.urls模块找不到。
3.2 编写视图
视图函数接受请求信息,生成网页需要的数据,将数据发送给浏览器。
render()函数根据视图提供的数据渲染响应。
这里向render()函数提供了两个实参:请求对象request和用于创建网页的html模板。
from django.shortcuts import render
# Create your views here.
def index(request):
"""学习笔记的主页"""
return render(request, 'learning_logs/index.html')
3.3 编写模板
模板定义了网页的结构,可以让你能够访问视图提供的任何数据。
新建文件夹…/learning_logs/templates/learning_logs/index.html
虽然这样写看起来又带你多余,但便于Django解读。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<p>Learning Log</p>
<p>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>
</body>
</html>
这样,一个简单的主页index.html就创建完成了。