Django Python DetailView 未按预期工作。我在尝试查看特定笔记时遇到问题

Django Python DetailView not working as expected. I get an issue when I try and view a specific note

需要建议。有人会指出我正确的方向吗?

将 Django 3.1.1 与 Pycharm Community 2020.2

结合使用

我正在使用 ListView 在一页上显示所有待办事项注释

allTasks.html

{% extends "app/base.html" %}

{% load static %}

{% block content %}

<body>

<div class="section">
  <div class="container" id="heading">
    <h3>List of all Tasks to-date</h3>
  </div>
      <div class="container">
          <ul id="taskcontainer">
            {% for i in obj %}
            <li>
              <div class="row">
                <div class="col-md-12">
                  <div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-inblock">
                    <div class="col p-4 d-flex flex-column position-static">
                      <strong class="d-inline-block mb-2 text-primary">{{ i.name }}</strong>
                      <h6 class="mb-0">{{ i.date }}</h6>
                      <div class="mb-1 text-muted">Team {{ i.team_project }}</div>
                      <p class="card-text mb-auto">{{ i.notes }}</p>
                      <p class="card-text mb-auto">Priority: {{ i.urgency }}</p>
                      <strong class="d-inline-block mb-2 text-danger">Completed? {{ i.completed }}</strong>
                      <span>
                        <a href="{% url 'task-detail' task.id %}" class="link">View</a>
                        <a href="#" class="link">Edit</a>
                      </span>
                      </div>
                  </div>
                </div>
              </div>
            </li>
            {% endfor %}
          </ul>
      </div>
</div>


</body>

从这里我进入每个注释的 DetailView

task_detail.html

{% extends "app/base.html" %}

{% load static %}

{% block content %}
    <br>
     <div class="row">
        <div class="col-md-12">
          <div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-inblock">
            <div class="col p-4 d-flex flex-column position-static">
              <strong class="d-inline-block mb-2 text-primary">{{ object.name }}</strong>
              <h6 class="mb-0">{{ object.date }}</h6>
              <div class="mb-1 text-muted">Team {{ object.team_project }}</div>
              <p class="card-text mb-auto">{{ object.notes }}</p>
              <p class="card-text mb-auto">Priority: {{ object.urgency }}</p>
              <strong class="d-inline-block mb-2 text-danger">Completed? {{ object.completed }}</strong>
              <strong class="d-inline-block mb-2 text-danger">Overdue? {{ object.overdue }}</strong>
            </div>
          </div>
        </div>
      </div>


{% endblock content %}

这是我的 views.py

def task(request):
    form = TasksForm()
    if request.method == 'POST':
        form = TasksForm(request.POST or None)
        if form.is_valid():
            form.save()
            messages.success(request, 'Task has been saved!')
        return render(request, 'app/tasks.html', {'form': form})
    else:
        return render(request, 'app/tasks.html', {'form': form})


class TaskListView(ListView):
    model = Task
    template_name = 'app/allTasks.html' # <app> / <model>_<viewtype>.html
    context_object_name = 'obj'
    ordering = ['-date'] # ordering by date


class TaskDetailView(DetailView):
    model = Task

urls.py

urlpatterns = [
    path('', views.index, name='index'),
    path('task/', views.task, name='tasks'),
    path('allTasks/', TaskListView.as_view(), name='allTasks'),
    path('task/<int:pk>/', TaskDetailView.as_view(), name='task-detail'),
]

我的问题如下

NoReverseMatch at /allTasks/
Reverse for 'task-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['task/(?P<pk>[0-9]+)/$']
Request Method: GET
Request URL:    http://127.0.0.1:8000/allTasks/
Django Version: 3.1.1
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'task-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['task/(?P<pk>[0-9]+)/$']
Exception Location: C:\Users\mackm\PycharmProjects\IT6041-Project\venv\lib\site-packages\django\urls\resolvers.py, line 685, in _reverse_with_prefix
Python Executable:  C:\Users\mackm\PycharmProjects\IT6041-Project\venv\Scripts\python.exe
Python Version: 3.8.5
Python Path:    
['C:\Users\mackm\PycharmProjects\IT6041-Project\IT6041_Project_Folder',
 'C:\Users\mackm\AppData\Local\Programs\Python\Python38-32\python38.zip',
 'C:\Users\mackm\AppData\Local\Programs\Python\Python38-32\DLLs',
 'C:\Users\mackm\AppData\Local\Programs\Python\Python38-32\lib',
 'C:\Users\mackm\AppData\Local\Programs\Python\Python38-32',
 'C:\Users\mackm\PycharmProjects\IT6041-Project\venv',
 'C:\Users\mackm\PycharmProjects\IT6041-Project\venv\lib\site-packages']
Server time:    Mon, 12 Oct 2020 03:48:26 +0000
Error during template rendering
In template C:\Users\mackm\PycharmProjects\IT6041-Project\IT6041_Project_Folder\app\templates\app\base.html, error at line 22

Reverse for 'task-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['task/(?P<pk>[0-9]+)/$']
12      <link rel="canonical" href="https://getbootstrap.com/docs/4.5/examples/album/">
13  
14      <!-- Bootstrap core CSS -->
15      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
16            integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
17      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"
18              integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV"
19              crossorigin="anonymous"></script>
20      <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
21              integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
22              crossorigin="anonymous"></script>
23      <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
24              integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
25              crossorigin="anonymous"></script>
26  
27      <style>
28        .bd-placeholder-img {
29          font-size: 1.125rem;
30          text-anchor: middle;
31          -webkit-user-select: none;
32          -moz-user-select: none;

base.html

{% load static %}
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v4.1.1">
    <title>My Project App</title>

    <link rel="canonical" href="https://getbootstrap.com/docs/4.5/examples/album/">

    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
          integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"
            integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV"
            crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
            integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
            crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
            integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
            crossorigin="anonymous"></script>

    <style>
      .bd-placeholder-img {
        font-size: 1.125rem;
        text-anchor: middle;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
      }

      @media (min-width: 768px) {
        .bd-placeholder-img-lg {
          font-size: 3.5rem;
        }
      }
    </style>
    <!-- Custom styles for this template -->
    <link rel="stylesheet" href="{% static 'app/album.css' %}" type="text/css">
  </head>
  <body>
    <header>
   <nav class="navbar navbar-expand-lg navbar-dark bg-primary">
      <a class="navbar-brand" href="/admin/">Admininstration</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarText">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item">
            <a class="nav-link" href="{% url 'index' %}">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{% url 'tasks' %}">To-Do</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Meeting Minutes</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Reflectives</a>
          </li>
        </ul>
        <form class="form-inline">
          <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
      </div>
   </nav>
</header>

     <main role="main" class="container">
      <div class="row">
        <div class="col-md-12">
          {% if messages %}
            {% for message in messages %}
                <div class="alert alert-{{ message.tags }}">
                    {{ message }}
                </div>
            {% endfor %}
          {% endif %}
          {% block content %}

          {% endblock %}
        </div>
      </div>
    </main>

  <footer class="text-muted">
  <div class="container">
    <p class="float-right">
      <a href="#">Back to top</a>
    </p>
    <p>This is a Bootstrap Album example, reconfigured to suit my project. </p>
    <p>New to Bootstrap? <a href="https://getbootstrap.com/" target="_blank">Visit the homepage</a> or read our <a href="https://getbootstrap.com/docs/4.5/getting-started/introduction/" target="_blank">getting started guide</a>.</p>
  </div>
</footer>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
      <script>window.jQuery || document.write('<script src="../assets/js/vendor/jquery.slim.min.js"><\/script>')</script>
    <script src="../assets/dist/js/bootstrap.bundle.min.js"></script>

</body>
</html>

如有任何帮助,我将不胜感激。提前谢谢你

在你的 allTasks.html 你使用 {% url 'task-detail' task.id %} 但是你没有 task 对象。

之前你定义了循环 - {% for i in obj %},所以你的 url 应该是 {% url 'task-detail' i.id %}