无法在Django应用程序中的两个模板之间导航

2024-09-29 21:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django(v3.2)应用程序中的不同模板之间导航时遇到了困难。该应用程序名为“管理汇款”。 应用程序的默认登录页(使用templatemanage_Migration/templates/manage_Migration/view_Migration.html)应显示项目列表(列表目前不相关),并且在该列表顶部应有一个链接,指向同一应用程序中的另一个页面,该页面允许向列表中添加新项目

首先调用的表单如下所示: 管理汇款/模板/管理汇款/查看汇款.html

{% extends "root.html" %}
{% load static %}
{% load crispy_forms_tags %}
{% url 'manage_remittance:remittance_add' as remittance_add %}

{% block title %}
VIEW REMITTANCES PAGE
{% endblock title %}

{% block content %}
<div class="list-group col-6">
<a href="{{ remittance_add }}" class="list-group-item list-group-item-action shadow-mt list-group-flush list-group-item-dark text-light">Click here to add remittance data</a>
</div>

我希望能够访问另一个模板(manage_-embication/templates/manage_-embication/embication\u-add.html),但是{{ remittance_add }}没有任何值

此外,当我在a href(见上文)中指定html文件的确切名称(migration_add.html)并单击该文件时,会出现以下错误:

Using the URLconf defined in sanctions_project.urls, Django tried these URL patterns, in this order:

    admin/
    [name='login']
    login/ [name='login']
    logout/ [name='logout']
    manage_remittance/ [name='view_remittance']
    manage_remittance/ remittance_add/ [name='create_remittance']
    ^static/(?P<path>.*)$
    ^media/(?P<path>.*)$

The current path, manage_remittance/remittance_add.html, didn’t match any of these.

我做错了什么

项目的URL.py片段:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', login_view, name='login'),
    path('login/', login_view, name='login'),
    path('logout/', logout_view, name='logout'),
    path('manage_remittance/', include('manage_remittance.urls')),      # namespace='manage_remittance'
 ]

URL.py位于管理_汇款应用程序:

from .views import (
    CreateRemittanceInfo,
    RemittanceListView
)

app_name = 'manage_remittance'

urlpatterns = [
    path('', RemittanceListView.as_view(), name='view_remittance'),
    path('remittance_add/', CreateRemittanceInfo.as_view(), name='create_remittance'),
    ]


manage_汇款应用程序中的views.py:

from django.shortcuts import render, get_object_or_404
from django.urls import reverse
from django.views.generic import ListView
from django.views.generic.edit import CreateView
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Remittance

class CreateRemittanceInfo(LoginRequiredMixin, CreateView):
    model = Remittance
    fields = ['remittance_text']
    template_name_suffix = '_add'

class RemittanceListView(ListView):
    model = Remittance
    template_name = 'manage_remittance/view_remittance.html'

Tags: pathnamefromimportviewadd应用程序manage
2条回答

看起来很简单:在模板中,应该显示一个列表,但事实并非如此。看看Django用户指南:https://docs.djangoproject.com/fr/3.2/ref/class-based-views/generic-display/

应该是这样的

{% for object in object_list %}
<p>{{object.remittance_text}}</p>
{% endfor %}

您的URL中似乎存在一个问题:

manage_remittance/ remittance_add/ [name='create_remittance']

name与不匹配

manage_remittance:remittance_add

相关问题 更多 >

    热门问题