Django 页面无法呈现 - views.py url 路径中的错误
Posted
技术标签:
【中文标题】Django 页面无法呈现 - views.py url 路径中的错误【英文标题】:Django page failing to render - error in views.py url path 【发布时间】:2017-12-22 20:27:57 【问题描述】:views.py 文件中出现错误,因此无法加载页面。
music/views.py
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) + '/'
实际(页面)错误是:
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',
在单独的测试中,album_id 似乎确实是“可访问的”
http://127.0.0.1:8000/music/1/
会正确加载页面(相册id号显示在页面上)。
错误指向上面的代码,但我看不到如何修复它。按照新波士顿教程,我用谷歌搜索看看是否有 Django 2.0 修复无济于事
总结一下:
http://127.0.0.1:8000/music/ 是行不通的。
http://127.0.0.1:8000/music/1 或 http://127.0.0.1:8000/music/3 在生成专辑 ID 时显示正常。
更新
同时发布 urls.py
from django.contrib import admin
from django.urls import include, path
from . import views #the dot means look at the current directory - look for a module called views
urlpatterns = [
#this is matching /music/
path('', views.index, name='index'),
path("<album_id>/", views.detail, name="detail")
]
【问题讨论】:
您能否发布您的 urls.py 代码,以便我们查看 urlpatterns 是如何设置的 查看更新。谢谢 【参考方案1】: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
。
你通常不会像那样在视图中构建字符串。希望您的教程稍后会继续渲染模板。
【讨论】:
我有这个用于渲染,但由于某种缩进错误而无法继续前进 - 但我看不到什么! 请不要在 cmets 中发布代码。很难阅读,也无法看到缩进。如果您有缩进错误,请确保您的代码仅包含空格并且没有任何制表符。与我之前的评论类似,您不会在实践中编写这样的代码,而是使用render
快捷方式。以上是关于Django 页面无法呈现 - views.py url 路径中的错误的主要内容,如果未能解决你的问题,请参考以下文章
django/ajax:无法在 views.py 中获取 Ajax 发布数据
为啥我的 django 模板无法识别我在 views.py 文件中设置的 url 参数?