Python网站 3 建立控制层,建立路由
- 2019 年 11 月 21 日
- 筆記
添加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/ 应该可以看到效果了。