Django链接显示模型元素的页面

问题描述

我正在尝试创建与Django相互链接的网页。我创建了一个包含以下元素的模型:标题摘要,description01,description02。在首页上,我显示标题摘要,这似乎工作正常。但是,我想要标题摘要后的链接,它们链接到带有description01的页面,然后链接到带有description02的页面。这就是我遇到的问题。我为description01.html创建了一个文件,在views.py中为其创建了一个函数,在urls.py中创建了一个路径,并添加了指向home的链接。当我尝试打开主页时,出现错误noreverseMatch / 找不到带有参数“(3,)”的“ description01”。尝试了1种模式:['articles / $'] 代码和屏幕截图: home.html

<h1>home</h1>

{% for outline in outline %}

{{ outline.title }}<br>
{{ outline.summary }}<br>
<a href="{% url 'description01' outline.id %}">LInk</a>

{% endfor %}

viwes.py

from django.shortcuts import render
from .models import Outline
    
def home(request):
    outline = Outline.objects.all()
    return render(request,'articles/home.html',{'outline': outline})

def description01(request):
    outline = Outline.description01
    return render(request,'articles/description01.html',{'outline': outline})

urls.py

from django.contrib import admin
from django.urls import path,include
from django.conf.urls.static import static
from django.conf import settings
from articles import views

urlpatterns = [
    path('admin/',admin.site.urls),path('',views.home,name='home'),path('articles/',views.description01,name='description01'),]

models.py

from django.db import models

class Outline(models.Model):
    title = models.CharField(max_length=100)
    summary = models.CharField(max_length=250,default="")
    description01 = models.CharField(max_length=250,default="")
    description02 = models.CharField(max_length=250,default="")

description01.html

<h1>description01</h1>

{% for outline in outline %}

{{ outline.description01 }}<br>

{% endfor %}

enter image description here

解决方法

{% for outline in outline %}可能会给您一个错误,因为您可能在调用内部轮廓或全局轮廓。尝试将其更改为:

{% for otlne in outline %}
    {{ otlne.description01 }}<br>
{% endfor %}

另外,outline = Outline.description01可能出了点问题,不是吗:

def description01(request):
    outline_objs = Outline.objects.all()
    context = {
        'd_01': [outline.description01 for outline in outline_objs]
    }
    return render(request,'articles/description01.html',context=context)

然后:

{% for d in d_01 %}
    {{ d }}<br>
{% endfor %}

这样,将在HTML文件中访问的d_01键只是所有Outlines对象中description01的列表。