Django应用新增模型时URL路由如何更新配置?
Django blog应用新增schedule模型的路由配置答疑
1. schedule模型对应的URL如何创建
Django没有自动为模型生成URL的机制,所有访问路径都需要开发者手动在urls.py文件中配置。你之前posts模型能正常访问的URL,也是之前手动配置好路由规则的,新增的schedule模型对应的URL,同样需要手动绑定路径和对应视图,不会自动生成。
2. schedule相关路由是否可以通过blog.urls统一导入
完全可以,这也是Django推荐的多应用路由组织方式。
你贴出的根urls.py里第三行path('accounts/',include('django.contrib.auth.urls'))就是典型的「统一导入某一模块下所有路由」的写法,和你导入app.urls的逻辑完全一致。
目前你的根路由里还没有引入blog应用的urls配置,你只需要做两步:
- 在blog应用目录下新建
urls.py文件(如果之前posts的路由已经写在这个文件里就跳过这步) - 在根
urls.py的urlpatterns里加一行path('blog/', include('blog.urls'))
之后不管是posts还是schedule的路由,都可以统一写在blog/urls.py里,会自动被根路由加载,不需要在根urls里逐条写单条路由规则。
3. Django如何引用schedule对应的视图,是否需要添加类视图路由配置
Django不会自动关联模型和视图,整个调用逻辑是:
- 先在
blog/views.py里写好schedule对应的业务视图(比如你提到的scheduleDetail类视图),视图内部按需引入schedule模型做数据查询、处理、返回响应 - 在
blog/urls.py里添加路由规则,把URL路径和写好的视图绑定 - 用户访问对应URL时,Django会根据路由匹配结果调用对应的视图,返回结果给用户
你提到的路由配置形式是对的,但示例里有两个明显错误:
- 路径字符串没闭合,正确路径应该是
'schedule/' name参数是路由反向解析的别名,和模板文件名没有关系,不应该传sidebar.html,建议用语义化的别名比如schedule_detail,后续在模板、视图里反向解析路由时直接用这个别名即可。
正确的blog/urls.py配置参考:
from django.urls import path from . import views urlpatterns = [ # 已有的posts相关路由 # path('posts/', views.PostList.as_view(), name='post_list'), # 新增schedule路由 path('schedule/', views.scheduleDetail.as_view(), name='schedule_detail'), ]
注意:配置路由前要确保你已经在views.py里定义好了
scheduleDetail类视图,并且正确引入了schedule模型,否则启动项目时会报导入错误。
内容的提问来源于stack exchange,提问作者ggsmith
相关产品推荐
相关产品推荐

