【问题标题】:What is wrong with this template in Django?Django 中的这个模板有什么问题?
【发布时间】:2017-06-17 11:59:36
【问题描述】:
from django.shortcuts import render
from django.http import HttpResponse            #http response sends back html/basic webpage
from django.conf.urls import include
from django.template import loader
from .models import Album

# Create your views here.
'''def index(request):
    all_objects = Album.objects.all()
    html = ''
    for album in all_objects:
        url = "/music/" + str(album.id) + "/"
        html += '<a href = "' + url + '">' + album.album_title + '</a><br>'
    return HttpResponse(html)
'''
def index(request):
    all_albums = Album.objects.all()
    #template = loader.get_template('music/index.html')
    context = {'all_albums': all_albums}
    return render(request, 'music/index.html', context)
    #return HttpResponse(template.render(context, request))

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

产生完全正确的模板。 当我为不存在的专辑添加模板时。 那就是我添加了2张专辑并与我的数据库同步,当我浏览第三个模板页面时,我应该得到404错误。 这个代码是-

    from django.http import Http404
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from .models import Album


def index(request):
    all_albums = Album.objects.all()
    #template = loader.get_template('music/index.html')
    context = {'all_albums': all_albums}
    return render(request, 'music/index.html', context)
    #return HttpResponse(template.render(context, request))
    #render has an inbuilt http return type

def detail(request, album_id):
    try:
        album = Album.objects.get(pk=album_id)
    except Album.DoesNotExist:
        raise Http404("Album does not exist")
    return render(request, 'music/detail.html', {'album':album})

当我输入 http://127.0.0.1:8000/music/3/ 时,它会产生一个 404 错误,我想这样做,但是当我输入 http://127.0.0.1:8000/music/2/ 时,它开始给出“TemplateDoesNotExist at /music/2/”错误。 为什么会这样……

【问题讨论】:

  • 您似乎对这里的模板和视图感到困惑。您的原始代码有效,因为您没有在详细视图中使用模板。您的第二个代码引用了一个 detail.html 模板,该模板可能不存在。
  • 不,我在 index.html 旁边添加了一个 detail.html 模板...
  • 它由{{专辑}}组成
  • 可以分享detail.html的目录吗?
  • 音乐/模板/音乐/details.html

标签: python django


【解决方案1】:

问题是你的模板文件details.html应该是detail.htmldetail后面没有s,就像你的views.py中提到的music/detail.html

您可以在views.py 中更改为music/details.html

模板名称应该匹配。

【讨论】:

  • @shery224 很酷,很高兴它对你有用,享受社区之旅,祝你好运:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
相关资源
最近更新 更多