1

I tried to copy the way this django tutorial did their hyperlinks for my own project: https://docs.djangoproject.com/en/3.0/intro/tutorial01/.

However, on my screen, I do not have hyperlinks, just regular text. What I currently have in my index is a bunch of names of units, and I want the user to be able to click on that unit to get a more detailed view of that unit's information. This is what I currently have in my templates, views, and urls:

urls:

from django.urls import path

from . import views

app_name = 'calc'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('<int:pk>/', views.UnitView.as_view(), name='unit'),
]

views:

from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.views import generic
from django.shortcuts import render
from django import forms
from .models import Unit, Class

# Create your views here.

class IndexView(generic.ListView):
    template_name = 'calc/index.html'
    context_object_name = 'unit_list'

    def get_queryset(self):
        return Unit.objects.all()

class UnitView(generic.DetailView):
    model = Unit
    template_name = 'calc/unit.html'

index.html:

{% if unit_list %}
    <ul>
    {% for unit in unit_list %}
        <li><a href="{% url 'calc:unit' unit.id %}"></a>{{ unit.unit_name }}</li>
    {% endfor %}
    </ul>
{% else %}
    <p>No units are available.</p>
{% endif %}

unit.html:

{{unit.unit_class}}

My guess is that either I'm using href incorrectly, or my urls.py is incorrect.

1 Answer 1

2

You need to put {{ unit.unit_name }} inside the <a> tag

The contents of an <a> tag are what get rendered as the link

<a href="{% url 'calc:unit' unit.id %}">{{ unit.unit_name }}</a>
Sign up to request clarification or add additional context in comments.

1 Comment

this must be the html equivalent of the missing parenthesis that I can never find for 5 hours and need to show 10 different people before somebody actually finds it. thanks for spotting that.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.