View视图层设计
编写hello world
接下来在blogpost目录下的views.py
模块中编写视图函数:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, Django!')
要调用视图函数index
我们需要映射到一个url,我们在blogpost目录下添加urls.py
模块,如下:
在blogpost/urls.py
中加入如下语句:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
下一步将URLconf指向blog/urls.py
模块,打开blog目录下的urls.py
文件:
加入如下语句:
① from django.conf.urls import url, include
from django.contrib import admin
② urlpatterns = [
url(r'^admin/', admin.site.urls),
③ url(r'^blog/', include('blogpost.urls'),
]
① 导入为项目和网站管理的URL函数和模块;
② 变量urlpatterns
定义了应用程序中的URL;
③admin.site.urls
模块定义了管理网站中请求的URL,include('blog.urls')
定义了Blog网站中请求的URL。
现在我们在浏览器输入地址http://127.0.0.1:8000/blog/,页面显示:
我们来分析django是如何完成这一过程的。首先用户通过浏览器输入一个URL地址,也就是向服务器发送一个HTTP请求。django通过urls.py
模块的url函数的第一个参数(正则)匹配相应的url()
,接着url函数的第二参数映射到需要调用视图函数views.index
。django继续从views.py
模块中调用index()
函数,request
参数是django封装好的HTTP请求,HttpResponse
函数类似python的print函数,最后将我们编写好的内容以网页的形式返回给用户。
编写真正的视图函数
在views.py
模块中加入如下代码:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Blog
def index(request):
post = Blog.objects.all()[0]
return HttpResponse(post.content)
再次打开浏览器输入http://127.0.0.1:8000/blog/:
页面显示了我们数据库中的内容。django的视图函数做两件事,返回包含所请求页面的HttpResponse
对象,或引发Http404异常等。
index()
函数从数据库中获取一篇文章对象,引用post指向该对象,随后HttpResponse
对象将包含的文章信息返回给浏览器。
但这有一个问题,我们将网页硬编码到视图函数中,将来需要修改时将会很麻烦,因此,我们需要用到django的模板系统,使用模板系统可以将设计与逻辑分离开来。