【问题标题】:Not able to navigate between two templates in a Django application无法在 Django 应用程序中的两个模板之间导航
【发布时间】:2021-06-12 17:54:11
【问题描述】:

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

首先调用的表单在这里: manage_remittance/templates/manage_remittance/view_remittance.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_remittance/templates/manage_remittance/remittance_add.html),但 {{ remittance_add }} 没有任何价值。

另外,当我在a href(见上文)中指定html文件的确切名称(remittance_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.

我在这里做错了什么?

项目的 urls.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'
 ]

manage_remittance 应用中的 urls.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_remittance 应用中的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'

【问题讨论】:

    标签: python django templates view navigation


    【解决方案1】:

    您的网址似乎有问题:

    manage_remittance/ remittance_add/ [name='create_remittance']
    

    name 不匹配

    manage_remittance:remittance_add
    

    【讨论】:

    • 谢谢,你是对的,但还有其他问题,因为我仍然得到一个空的 remittance_add 值。
    • 看起来很简单:在您的模板中,您应该显示一个列表,但事实并非如此。查看 Django 用户指南:docs.djangoproject.com/fr/3.2/ref/class-based-views/… 它应该看起来像 ``` {% for object in object_list %}

      {{object.remittance_text}}

      {% endfor %} ``跨度>
    • 看起来很简单:在您的模板中,您应该显示一个列表,但事实并非如此。看看 Django 用户指南:docs.djangoproject.com/fr/3.2/ref/class-based-views/… 它应该看起来像 ``` {% for object in object_list %}

      {{object.remittance_text}}

      {% endfor %} ````
    【解决方案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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2014-10-28
      • 2018-03-17
      • 1970-01-01
      • 2015-11-23
      相关资源
      最近更新 更多