Python网站 3 建立控制层,建立路由 ##添加django控制层view(controller) 在django中,controller叫做view,系统默认有一个views.py文件,可以在里面写。当然,也能自己新建多个文件。方便项目管理。 一个典型的view代码如下,选取合适的template,然后往里面绑定数据。 ``` from django.template import loader from django.http import HttpResponse from models import BlogPost, Category from tools import webTools def index(request): # 准备模版 t = loader.get_template("index.html") #省略 10000字,准备数据 c = {'posts':finalPosts,"category":category,} # 覆写模版 return HttpResponse(t.render(c)) ``` 还有一种比较简单的写法: ``` from django.shortcuts import render def cms(request,tempCms): # 准备数据 context = {} context['title'] = tempCms.title context['contentData'] = tempCms.contentData return render(request, 'cms/index.html', context) ``` 当然django也提供了一种class_view的方式。代码类似下面: ``` class details(TemplateView): template_name = "blog/details.html" def get_context_data(self, **kwargs): context = super(details, self).get_context_data(**kwargs) # 省略10000字 准备相应数据 context['blog'] = blog context['category'] = category context['title'] = blog.title return context @method_decorator(csrf_protect) def post(self, request, aid): # 省略10000字 return redirect("/blog/details/"+aid) ``` 这里就不详述了,因为我觉得这样更麻烦。 现在,我们就已经写好了一个view了。 ##建立Url 路由 有了template和view,也有了数据model,但是访问一个网址,需要对我们的浏览器地址进行路由解析,服务器才能调用到我们辛辛苦苦写好的view。 首先,打开PROJECTNAME/urls.py,使用`include`关键字为`Blog`建立跳转,方便管理。(当然你也可以把整个网站的映射都写在这里) ``` from django.conf.urls import url,include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', include('blog.urls')), ] ``` 然后,打开blog app 下的urls.py文件。填写实际的路由。 ``` from django.conf.urls import url from blog.views import index urlpatterns = [ url(r'^$', index), ] ``` 现在,打开网站的:http://127.0.0.1:8000/blog/ 应该可以看到效果了。 来自 大脸猪 写于 2017-01-23 16:26 -- 更新于2020-10-19 13:06 -- 0 条评论