Django 教程之路由URL配置即MTV和MVC简述

有多少种URL,就会存在多少种页面,每种页面对应一类URL,然后再来编写View的代码,这样可以去掉重复的逻辑。接着就要分析页面上需要呈现的数据,不同的数据意味这要用到不同的模型或者字段。所以URL配置很重要。

MVC

Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求

  • M:models 数据库相关
  • V:views 视图相关
  • C:controller 控制器 url分发

MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

  • M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
  • T 代表模板 (Template):负责如何把页面展示给用户(html)。
  • V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template

  • M:models 数据库相关
  • T:templates 模板 html文件
  • V:views 视图相关 控制器 和 url分发

一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

URL基本概念

URL全称为(UniformResoureLocator)意为“统一资源定位符”。URL是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。 互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL格式

schema://host[:port#]/path/.../[?query-string][#anchor]

举例:http://192.168.1.222:8000/hello/

  1. schema(协议):http
  2. host(主机,常指服务器主机):192.168.1.222
  3. port(端口):8000
  4. path(路径):hello/

URL功能

  • URL配置(URLconf)就像是Django所支撑网站的目录,视图的映射表
  • URL映射到Django中视图的地址,返回页面的响应

规划url.py

URL是使用正则表达式编写,比如url(r’^admin/’, admin.site.urls),就是访问admin路径,即http://192.168.1.222:8000/admin

为了方便管理url,这里建议把应用对应的url挡在应用的文件夹内

  1. 在myblog/blog/apps/config下创建urls.py文件

  2. 将该应用的URL统一写到这个文件内,引入views

    from django.conf.urls import url
    from . import views
    
    urlpatterns = [
        # 首页
        url(r'^$', views.index, name='index'),  # 主页,自然排序
    ]
    
  3. 项目的URL(项目urls)关联应用APP(config)的url,关联后,起作用的实际是

    源码

    from django.conf.urls import url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]
    

    引入include并添加

    from django.conf.urls import url
    from django.contrib import admin
    from django.conf.urls import include
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'', include('config.urls', namespace='blog')),
    ]
    

    我们这里导入了一个 include 函数,然后利用这个函数把 config应用下的 urls.py 文件包含了进来。


    此外 include 前还有一个 '',这是一个空字符串,当然这里也可以写其它字符串,django 会把这个字符串和后面 include 的 urls.py 文件中的 URL 拼接。

    比如说如果我们这里把 '' 改成 'index/',而我们在config\urls.py 中写的 URL 是 '',即一个空字符串。那么 django 最终匹配的就是 index/加上一个空字符串,即index/。 如果在config\urls.py 中写的 URL 是'^nihao$',那地址就是`index/nihao’,即http://127.0.0.1:8000/index/nihao

编写views

只是为了演示,views会单独配置

  1. 打开myblog/blog/apps/config/views.py文件

  2. 写入下面代码

    def index(request):
        return HttpResponse("欢迎访问我的博客首页!")
    
  3. 运行server,打开http://127.0.0.1:8000/

  4. 显示:欢迎访问我的博客首页!

URL分享

from django.conf.urls import url
from .views import IndexView, AboutView, ArticleView, CategoryView, TagView, MySearchView, ArchivesView

urlpatterns = [
    # 首页
    # url(r'^$', IndexView.as_view(template_name='index.html'), name='index'),  # 主页,自然排序
    url(r'^$', IndexView.as_view(), name='index'),  # 主页,自然排序
    # 关于自己
    url(r'^about/$', AboutView, name='about'),
    url(r'^archives/$', ArchivesView.as_view(), name='archives'),
    # url(r'^about/$', TagView.as_view(), name='about'),
    # 文章详情页面
    url(r'^article/(?P<pk>[0-9]+)/$', ArticleView.as_view(), name='article'),
    url(r'^category/(?P<name>\w+)/$', CategoryView.as_view(), name='category'),
    url(r'^tag/(?P<pk>[0-9]+)/$', TagView.as_view(), name='tag'),
    # url(r'^search/$', search, name='search'),
    # url(r'^search/$', MySearchView, name='search_view'),
    url(r'^search/$', MySearchView.as_view(), name='search'),

]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值