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)
结果
多级路由配置和访问
如果项目规模较大,所有路由放在同一个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)