Django页面无法呈现 - views.py网址路径中的错误

时间:2017-12-22 20:27:57

标签: python django url views

我在views.py文件中出现错误,因此我无法加载页面。

音乐/ views.py

<button ... [popoverTitle]="helpTitle" [ngbPopover]="popContent">
  ...
</button>

导致错误的行可能是:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Album

# Create your views here.

#each URL is connected to a view or an Http Response

def index(request):
    all_albums = Album.objects.all()
    html = ' '
    for album in all_albums:
        url= '/music/' + str(album_id) + '/'
        html +='<a href="' + url + '">'+album.album_title+'</a><br>'
    return HttpResponse(html)

def detail(request,album_id):
    return HttpResponse("<h2>Details for Album id:" + str(album_id) + "</h2>")

实际(页面)错误是:

url= '/music/' + str(album_id) + '/'

在另一个测试中,album_id似乎确实是“accessbile”

http://127.0.0.1:8000/music/1/

将正确加载页面(相册ID号显示在页面上)。

错误指向上面的代码,但我看不出如何修复它。继新波士顿教程之后,我用google搜索是否有Django 2.0修复无效

总结:

http://127.0.0.1:8000/music/是不起作用的。

http://127.0.0.1:8000/music/1http://127.0.0.1:8000/music/3在生成相册ID时显示正常。

更新

还发布了urls.py

NameError at /music/
name 'album_id' is not defined
Request Method: GET
Request URL:    http://127.0.0.1:8000/music/
Django Version: 2.0
Exception Type: NameError
Exception Value:    
name 'album_id' is not defined
Exception Location: C:\Users\User\Desktop\website\music\views.py in index, line 13
Python Executable:  C:\Python34\python.exe
Python Version: 3.4.3
Python Path:    
['C:\\Users\\User\\Desktop\\website',

1 个答案:

答案 0 :(得分:0)

def index(request):
    all_albums = Album.objects.all()
    html = ' '
    for album in all_albums:
        url= '/music/' + str(album_id) + '/'

在使用之前,您尚未定义album_id

您在循环for album in all_albums:中,因此如果您想要相册ID,请使用album.id

您通常不会在视图中构建字符串。希望您的教程将在以后继续渲染模板。