渲染页面是错误的

时间:2017-02-05 10:48:14

标签: python html django

当我访问upload_save方法时,显示了basic.html。 我在view.py中编写(改为),如

def upload_save(request):

    photo_id = request.POST.get("p_id", "")

    if (photo_id):
        photo_obj = Post.objects.get(id=photo_id)
    else:
        photo_obj = Post()

    files = request.FILES.getlist("files[]")

    photo_obj.image = files[0]

    photo_obj.save()
    return render(request, "registration/accounts/photo.html")

    photos = Post.objects.all()
    context = {
        'photos': photos,
    }
    return render(request, 'registration/accounts/photo.html', context)

所以,当我访问upload_save方法时,我自然会想到,会显示photo.html。 在photo.html中,我写了

{% extends "registration/accounts/base.html" %}
{% block body %}
<div class="container">
  {% for photo in photos %}
    <h2 class="page-header">{{ photo.title }}</h2>
    <div class="row">
      <div class="col-xs-4">
        <img class="img-responsive" src="/media/{{ photo.image1 }}">
      </div>
      <div class="col-xs-4">
        <img class="img-responsive" src="/media/{{ photo.image2 }}">
      </div>
      <div class="col-xs-4">
        <img class="img-responsive" src="/media/{{ photo.image3 }}">
      </div>
    </div>
    <a class="btn btn-primary" href="{% url 'accounts:upload' photo.id %}">UPLOAD</a>
  {% endfor %}
</div>
{% endblock %}
我写道  photo.html中的base.html,但我无法理解为什么photo.html的内容没有显示。 通过Google Verification,我发现只有base.html显示在我的页面中。(因此,无法读取photo.html) 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您未向模板提供photos{% for photo in photos %}正在尝试循环未提供的内容。您需要将photos添加到模板上下文中,如下所示:

# ... rest of your view
photos = Post.objects.all()
context = {'photos': photos}
return render(
    request, "registration/accounts/photo.html", context=context
)

参考:render()

答案 1 :(得分:0)

我认为你没有在base.html中包含块体。如果不包含,请在要添加photo.html内容的base.html中添加这些行

{% block body %}
{% endblock %}

base.html应该看起来像这样

&#13;
&#13;
{% load staticfiles %}
<html>
    <head>
        <title>Hello</title>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <link href='//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
    </head>
    <body>
    <div class="page-header">
        <h1><a href="/">Photo list</a></h1>
    </div>
    <div class="content container">
        <div class="row">
            <div class="col-md-8">
            {% block body %}
            {% endblock %}
            </div>
        </div>
    </div>
</body>
</html>
&#13;
&#13;
&#13;