Python Web开发:多级路由配置和访问

来自CloudWiki
跳转至: 导航搜索

单级路由配置

下面我们以首页路由为例,介绍如何实施单级路由配置

配置路由

hengDaProject/urls.py:

from django.contrib import admin
from django.urls import path
from homeApp.views import home

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',home,name="home"),
]



第1个参数为相对访问路由,第二个参数为绑定的视图函数

第3个参数用于在模板中进行逆向解析。

注册应用

hengDaProject/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'homeApp',     # 添加"首页"应用
    'aboutApp',    # 添加"公司简介"应用
    'contactApp',  # 添加"人才招聘"应用
    'newsApp',     # 添加"新闻动态"应用
    'productsApp', # 添加"产品中心"应用
    'serviceApp',  # 添加"服务支持"应用
    'scienceApp',  # 添加"科研基地"应用
]

编写视图函数

homeApp/views.py:

from django.shortcuts import render

# Create your views here.

from django.shortcuts import HttpResponse

def home(request):
    html = '<html><body></body>首页</body></html>'
    return HttpResponse(html)

结果

Python21041701.png

多级路由配置和访问

如果项目规模较大,所有路由放在同一个urls.py中,会使得路由管理显得混乱、逻辑不清晰。

可以将与各个路由有关的路由放置再各个应用文件夹中。

每个应用单独管理一个urls.py

配置路由

aboutApp/urls.py:

 
from django.urls import path
from . import views

app_name = 'aboutApp'

urlpatterns = [
    path('survey/', views.survey, name='survey'),  # 企业概况
    path('honor/', views.honor, name='honor'),     # 荣誉资质
]

总路由:

from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from homeApp.views import home

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',home,name="home"),
    path('aboutApp/', include('aboutApp.urls')),        # 公司简介
]

总路由(完整版):

from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from homeApp.views import home


urlpatterns = [
    path('admin/', admin.site.urls),                    # 管理员
    path('', home, name='home'),                        # 首页
    path('aboutApp/', include('aboutApp.urls')),        # 公司简介
    path('contactApp/', include('contactApp.urls')),    # 人才招聘
    path('newsApp/', include('newsApp.urls')),          # 新闻动态
    path('productsApp/', include('productsApp.urls')),  # 产品中心
    path('scienceApp/', include('scienceApp.urls')),    # 科研基地
    path('serviceApp/', include('serviceApp.urls')),    # 服务支持
]

配置视图函数

abuoutApp/views.py:

from django.shortcuts import render
from django.shortcuts import HttpResponse


# Create your views here.
def survey(request):
    html = '<html><body>企业概况</body></html>'
    return HttpResponse(html)


def honor(request):
    html = '<html><body>荣誉资质</body></html>'
    return HttpResponse(html)

访问

企业概况:http://127.0.0.1:8000/aboutApp/survey/

荣誉资质:http://127.0.0.1:8000/aboutApp/honor/