urls.py
cpp
from django.urls import path
# 从django.urls模块导入path函数
# path函数用于定义URL路径与视图函数的映射关系
from app import views
# 从当前项目的app模块导入views视图文件
# views.py中包含了所有处理请求的函数
urlpatterns = [
# urlpatterns是一个列表,定义了所有URL路由规则
# Django会按照列表顺序依次匹配用户请求的URL
# 一旦找到匹配的规则,就调用对应的视图函数处理请求
# ====================== 用户认证相关 ======================
path('login/', views.login, name='login'),
# 定义登录页面的URL路由
# 'login/':用户访问的URL路径,例如 http://127.0.0.1:8000/login/
# views.login:处理该请求的视图函数,在views.py中定义
# name='login':给这个URL起一个名字,方便在模板中反向解析
# 例如在HTML中可以用 {% url 'login' %} 生成登录页面的链接
path('register/', views.register, name='register'),
# 定义注册页面的URL路由
# 用户访问 /register/ 时会调用views.register函数
path('logOut/', views.logOut, name='logOut'),
# 定义退出登录的URL路由
# 用户访问 /logOut/ 时会调用views.logOut函数
# 通常这个视图会清除用户的登录状态并重定向到首页
# ====================== 用户中心相关 ======================
path('home/', views.home, name='home'),
# 定义系统首页的URL路由
# 用户登录后看到的个人主页
path('changeSelfInfo/', views.changeSelfInfo, name='changeSelfInfo'),
# 定义修改个人信息的URL路由
# 用户访问 /changeSelfInfo/ 时可以修改自己的资料
path('changePassword/', views.changePassword, name='changePassword'),
# 定义修改密码的URL路由
# 用户访问 /changePassword/ 时可以修改登录密码
# ====================== 数据展示相关 ======================
path('tableData/', views.tableData, name='tableData'),
# 定义表格数据展示页面的URL路由
# 用于以表格形式展示所有景点数据
path('addComments/<int:id>', views.addComments, name='addComments'),
# 定义添加评论的URL路由,带有动态参数
# '<int:id>':URL路径中的动态部分,int表示参数必须是整数
# 例如用户访问 /addComments/123 时,id参数的值就是123
# 这个id通常是景点的主键,用于标识要对哪个景点添加评论
# ====================== 数据可视化相关 ======================
path('cityChar/', views.cityChar, name='cityChar'),
# 定义城市分布图表的URL路由
# 生成景点按城市分布的统计图表(可能是柱状图)
path('rateChar/', views.rateChar, name='rateChar'),
# 定义评分分布图表的URL路由
# 生成景点评分分布的统计图表(可能是直方图)
path('priceChar/', views.priceChar, name='priceChar'),
# 定义价格分布图表的URL路由
# 生成景点价格分布的统计图表
path('commentsChar/', views.commentsChar, name='commentsChar'),
# 定义评论数量分布图表的URL路由
# 生成景点评论数量的统计图表
# ====================== 推荐功能相关 ======================
path('recommendation/', views.recommendation, name='recommendation'),
# 定义个性化推荐页面的URL路由
# 调用协同过滤算法,为用户生成个性化景点推荐列表
# ====================== 文本分析相关 ======================
path('detailIntroCloud/', views.detailIntroCloud, name='detailIntroCloud'),
# 定义景点介绍词云图的URL路由
# 对景点详细介绍文本进行词频分析,生成词云图
# 展示景点介绍中的高频关键词
path('commentContentCloud/', views.commentContentCloud, name='commentContentCloud'),
# 定义评论内容词云图的URL路由
# 对用户评论内容进行词频分析,生成词云图
# 展示用户评论中的高频关键词,反映用户关注点
]
上述代码是Django项目的URL路由配置文件,用于定义网站中不同网址对应的处理函数。
它创建了16个URL路由规则,将用户访问的每个网址映射到views.py中对应的视图函数:
-
用户认证相关:登录、注册、登出、修改个人信息、修改密码
-
数据展示相关:首页、表格数据、景点详情、城市分布、评分分布、价格趋势、评论分析
-
推荐功能相关:个性化推荐页面
-
数据可视化相关:景点介绍词云、评论内容词云
每个path定义了URL路径(如login/)、对应的视图函数(如views.login)和URL名称(如name='login'),便于在模板中通过名称反向解析URL。这个文件是连接用户请求与后端逻辑的桥梁。
| 类别 | URL路径 | 功能 |
|---|---|---|
| 用户认证 | login/、register/、logOut/ | 登录、注册、退出 |
| 用户中心 | home/、changeSelfInfo/、changePassword/ | 个人主页、修改信息 |
| 数据展示 | tableData/、addComments/ | 表格展示、添加评论 |
| 可视化 | cityChar/、rateChar/、priceChar/、commentsChar/ | 各类统计图表 |
| 推荐功能 | recommendation/ | 个性化推荐 |
| 文本分析 | detailIntroCloud/、commentContentCloud/ | 词云图分析 |
这个文件的作用是定义网站的所有访问入口,当用户在浏览器中输入网址时,Django根据这些规则找到对应的处理函数,返回相应的网页内容。
为什么要配置URL
将网址映射到具体功能
用户在浏览器输入不同的网址,期望看到不同的内容:
| 用户输入 | 期望看到 | URL配置的作用 |
|---|---|---|
www.我的网站.com/login/ |
登录页面 | 告诉Django:这个地址对应登录功能 |
www.我的网站.com/register/ |
注册页面 | 告诉Django:这个地址对应注册功能 |
www.我的网站.com/recommendation/ |
推荐结果 | 告诉Django:这个地址对应推荐算法 |
如果没有URL配置,服务器收到请求后不知道应该执行哪段代码,只能返回404错误。
cpp
from django.contrib import admin
# 导入Django内置的后台管理模块
# admin是Django自动生成的管理界面,可以方便地管理数据库数据
from django.urls import path, include
# 从django.urls导入两个核心函数
# path:用于定义单个URL路由规则
# include:用于引入其他应用的URL配置文件,实现模块化
from django.conf import settings
# 导入项目的配置文件settings.py
# settings.py中定义了项目的所有配置,如数据库连接、媒体文件路径等
from django.conf.urls.static import static
# 导入static辅助函数,用于开发环境下提供媒体文件的访问服务
# 这个函数可以帮助Django正确地处理用户上传的图片、文件等
urlpatterns = [
# urlpatterns是Django识别的主路由列表
# 所有的URL匹配规则都写在这个列表中
# Django会按照列表顺序从上到下匹配用户请求的URL
path('admin/', admin.site.urls),
# 配置Django后台管理系统的URL
# 当用户访问 http://127.0.0.1:8000/admin/ 时
# 自动进入Django内置的后台管理界面
# 管理员可以在这里增删改查数据库中的数据
path('app/', include('app.urls'))
# 配置应用模块的URL转发规则
# 当用户访问 http://127.0.0.1:8000/app/xxx 时
# 所有以app/开头的请求都会被转发给app应用自己的urls.py处理
# 这样实现了模块化设计,不同功能的URL可以分开管理
# app应用中的urls.py负责定义具体的路由,如登录、注册、推荐等
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# 这一行是开发环境下的媒体文件访问配置
# static()函数返回处理媒体文件的URL路由规则
# 然后将这些规则追加到urlpatterns列表中
#
# settings.MEDIA_URL:媒体文件的URL前缀,通常设为'/media/'
# 例如用户上传的头像,访问路径是 /media/avatar/xxx.png
#
# document_root=settings.MEDIA_ROOT:指定媒体文件的存储目录
# 通常是项目中的一个文件夹,如'media/'
#
# 这行代码的作用是:
# 当用户在浏览器中访问媒体文件时(如头像图片)
# Django能够正确地从文件系统中找到并返回这些文件
#
# 注意:这个配置仅用于开发环境
# 在生产环境中,媒体文件通常由专门的Web服务器(如Nginx)处理
这段代码是Django项目的主路由配置文件,主要做三件事:
第一 ,将admin/路径指向Django内置的后台管理系统,管理员可以通过这个地址管理数据库数据。
第二 ,将所有以app/开头的请求,转发给app应用自己的urls.py文件处理。这样实现了模块化设计,不同应用的URL配置可以分开管理。
第三 ,最后一行代码配置了媒体文件的访问路由 。在开发环境下,当用户访问媒体文件(如用户上传的头像)时,Django能从正确的文件夹中找到并返回这些文件。这行代码将MEDIA_URL(媒体文件URL前缀)映射到MEDIA_ROOT(媒体文件存储目录),实现了文件的访问功能。