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

159 Views Asked by At

Advice required. would someone point me in the right direction?

Using Django 3.1.1 with Pycharm Community 2020.2

I'm working with ListView to show all To-Do notes on one page

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>

From here I go into DetailView to each individual note

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 %}

Here is my 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'),
]

my issue as below

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/[email protected]/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/[email protected]/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>

I would appreciate any assistance with this. Thank you in advance

1

There are 1 best solutions below

1
On BEST ANSWER

in your allTasks.html you use {% url 'task-detail' task.id %} but you don't have task object.

Earlier you define loop - {% for i in obj %}, so your url should be {% url 'task-detail' i.id %}