软件测试

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

2020-06-25  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读