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