无涯教程-Django - Urls&Views

36 阅读1分钟

Django中的请求首先到达 urls.py ,然后转到 views.py 中的匹配函数。 views.py 中的Python函数从 urls.py 获取网络请求,并向模板(templates)提供响应。 它可能会根据 queryset 进入 models.py 中的数据访问层。

Django Urls and Views

如果无涯教程看一下应用程序的3层架构。视图就像业务逻辑层。 它是典型的 MVC (模型视图控制器)设计中的控制器 但是django的命名约定略有不同,称为 MVT (模型视图模板),其中: Model 是数据访问层, View 是业务逻辑层, Template是表示层。

Django MVT Architecture

Urls路径

Django默认情况下在项目下有一个 urls.py 文件。它还为 admin 应用提供了一个预定义的路径。 但是,django建议通过该应用程序下新创建的另一个 urls.py 映射所有资源。下面解释了它:

mysite-urls.py

    from django.contrib import admin  
    from django.urls import path, include
urlpatterns </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">  
    path</span><span class="pun">(</span><span class="str">admin/</span><span class="pun">,</span><span class="pln"> admin</span><span class="pun">.</span><span class="pln">site</span><span class="pun">.</span><span class="pln">urls</span><span class="pun">),</span><span class="pln">  
    path</span><span class="pun">(</span><span class="str">myapp/</span><span class="pun">,</span><span class="pln"> include</span><span class="pun">(</span><span class="str">myapp.urls</span><span class="pun">)),</span><span class="pln">  
</span><span class="pun">]</span><span class="pln">      </span></pre>

myapp-urls.py

    from django.urls import path
    from . import views
urlpatterns </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">  
    path</span><span class="pun">(</span><span class="str"></span><span class="pun">,</span><span class="pln"> views</span><span class="pun">.</span><span class="pln">index</span><span class="pun">),</span><span class="pln">  </span><span class="com"># app homepage</span><span class="pln">
</span><span class="pun">]</span><span class="pln">                 </span></pre>

查看函数

Url映射会将请求从项目网址重定向到应用程序网址,然后再重定向到相应的视图函数。 示例视图函数代码可能如下所示:

    def index(request):
        return render(request, index.html, {})
</span><span class="kwd">or</span><span class="pun">,</span><span class="pln">

</span><span class="kwd">from</span><span class="pln"> django</span><span class="pun">.</span><span class="pln">http </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">HttpResponse</span><span class="pln">
</span><span class="kwd">def</span><span class="pln"> index</span><span class="pun">(</span><span class="pln">request</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">HttpResponse</span><span class="pun">(</span><span class="str">"Hello World"</span><span class="pun">)</span><span class="pln"> 
                            </span></pre>

在这里, request 是url请求映射和调用view函数。 render将给定的模板与给定的上下文字典结合在一起。 {} 表示可以添加到模板上下文的值的字典。

参考链接

www.learnfk.com/django/djan…