在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了。
有了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/ 应该可以看到效果了。