当同一个 Django 模型文件中的两个模型时的模板期望

template expectations when two models within same Django model file

提问人:wdchild 提问时间:9/22/2023 更新时间:9/22/2023 访问量:11

问:

我在 Django 网球阶梯应用程序中有两个不同的(相关)模型类:和 .对于相应的视图文件,我在同一文件中包含两组相应的基于类的视图。我还将所有网址都包含在同一个文件中。这些如下所示:LadderPlayer

from django.urls import path
from .views import HomePageView, PlayerListView, PlayerDetailView, \
                   PlayerEditView, PlayerCreateView, PlayerDeleteView, \
                   LadderListView, LadderDetailView, LadderDeleteView

urlpatterns = [
    path('', HomePageView.as_view(), name='home'),
    path('players/', PlayerListView.as_view(), name='players'),
    path('player/detail/<int:pk>/', PlayerDetailView.as_view(), name='player_detail'),
    path('player/edit/<int:pk>/', PlayerEditView.as_view(), name='player_edit'),
    path('player/create/', PlayerCreateView.as_view(), name='player_create'),
    path('player/delete/<int:pk>/', PlayerDeleteView.as_view(), name='player_delete'),
    path('ladder_history/', LadderListView.as_view(), name = 'ladder_history'),
    path('ladder/detail/<int:pk>/', LadderDetailView.as_view(), name = 'ladder_detail'),
    path('ladder/delete/<int:pk>/', LadderDeleteView.as_view(), name='ladder_delete'),
]

在项目 url 中,我包含此 urls 文件的路径,如下所示。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path('', include('players.urls')),
    path('', include('matches.urls')),
    path('accounts/', include('accounts.urls')),
]

这就是问题所在。当我单击一个按钮以拉出ladder_history时,Django 似乎希望模板位于

TemplateDoesNotExist at /ladder_history/

players/ladder_list.html

Request Method:     GET
Request URL:    http://127.0.0.1:8000/ladder_history/
Django Version:     4.2.5
Exception Type:     TemplateDoesNotExist
Exception Value:    players/ladder_list.html

我完全被迷惑了。我没有“ladder_list.html”,而是“ladder_history.html”,正如我在 ListView 中指定的那样。

# players.view.py
...
class LadderListView(ListView):
    model = Ladder
    template = 'ladder_history.html'
    ordering = ['date']
    context_object_name = 'past_ladders'

所有模板都位于同一个 TEMPLATES 目录中,其他模型都没有问题。(Match 类位于不同的应用中,因为它需要单独的逻辑。

异常值从何处生成?假设它将被称为“ladder_list”而不是我在 LadderListView 中所说的,这很奇怪。此外,在路径中添加“玩家”似乎表明我有义务为每个模型使用不同的应用程序?我的印象是,您可以在同一个应用程序中拥有相关模型。players/ladder_list.html

我该如何解决这个问题?

Django 模板 URL 模型 自动生成

评论


答: 暂无答案