美文网首页软件测试
2、Django定制页面(子应用)及路由配置

2、Django定制页面(子应用)及路由配置

作者: 小啊小狼 | 来源:发表于2020-06-25 11:53 被阅读0次

    在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该模块代码整体复制过去,达到复用。

    二、创建步骤

    1、创建子应用

    命令行模式执行:python manage.py startapp projects

    projects为自己想要创建的子应用名称,子应用名小写复数形式,不要用中文

    子应用目录和文件说明

    projects/migrations:存放数据库迁移脚本和迁移历史记录等信息

    projects/admin.py:admin后台站点的相关配置(需要后台站点时才会用到)

    projects/apps.py:为app label的相关配置

    projects/models.py:存放数据库模型相关信息

    projects/tests.py:对当前的子应用进行自测的单元测试

    projects/views.py:子应用视图,定义业务逻辑

    2、注册子应用

    在全局配置文件Dev04/settings.py中的INSTALLED_APPS,对子应用进行注册

    子应用名.apps.子应用名首字母大写Config

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'projects.apps.ProjectsConfig'
    ]
    

    3、创建视图函数或视图类

    3.1、在projects/views.py下创建视图函数

    from django.http import HttpResponse
    
    def index(request):
        if request.method == "GET":
            return HttpResponse("<h2>GET,这个是index页面</h2>")
        elif request.method == "POST":
            return HttpResponse("<h2>POST,这个是index页面</h2>")
    
    
    def page_1(request):
        return HttpResponse("<h2>这个是page_1页面</h2>")
    
    
    def page_2(request):
        return HttpResponse("<h2>这个是page_2页面</h2>")
    

    3.2、在projects/views.py下创建视图类

    from django.views import View
    
    class PageClass(View):
        def get(self, request):
            return HttpResponse("<h2>GET,这个是index页面</h2>")
    
        def post(self, request):
            return HttpResponse("<h2>POST,这个是index页面</h2>")
    
        def put(self, request):
            return HttpResponse("<h2>PUT,这个是index页面</h2>")
    
        def delete(self, request):
            return HttpResponse("<h2>DELETE,这个是index页面</h2>")
    

    4、配置路由

    前端获取一个页面,其实就相当于调用后端的一个函数
    路由起到承接前端和后端的交互
    路由表:url与后端视图函数是一一对应的关系
    使用规则:在urls.py模块下的urlpatterns字段列表中定义
    e.g 路由匹配会先从主路由开始,匹配到则返回,如果url第一部分匹配成功,那么会将url剩下的部分拿到子路由中进行匹配

    4.1 配置子路由

    4.1.1、路由指向视图函数
    在子应用projects新建urls.py 文件
    将视图文件views下定义的视图函数导入至urls.py中
    前端访问xxx/index/,则调用index视图函数,
    前端访问xxx/page_1/,则调用index_1视图函数,以此类推

    from django.urls import path
    from .views import index,page_1,page_2,PageClass
    urlpatterns = [
        path('index/', index),
        path('page1/', page_1),
        path('page2/', page_2)
    ]
    

    4.1.2、路由指向视图类写法
    将视图文件views下定义的视图类导入至urls.py中
    urlpatterns添加如下路由
    前端访问xxx/index2/,则调用PageClass视图函数,

    path('index2/',PageClass.as_view())
    

    4.2 配置全局路由urls

    全局路由可直接指向全局views定义的视图函数和视图类,和子路由配置规则一样。
    全局路由若想指向子应用views定义的数函数和视图类,配置方法如下:
    1、from django.urls import include 导入 include模块
    2、配置全局路由指向子应用的urls,其中page是定义的中转路径。访问子路由的url方式为域名/page/子路由

    from django.contrib import admin
    from django.urls import path,include
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('page/', include('projects.urls')),
    ]
    

    5、效果演示

    image.png image.png image.png

    相关文章

      网友评论

        本文标题:2、Django定制页面(子应用)及路由配置

        本文链接:https://www.haomeiwen.com/subject/mbcsfktx.html