2017-02-05 9 views
0

upload_saveメソッドにアクセスすると、basic.htmlが表示されました。 私はレンダリングページが間違っています

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) 

ようview.pyで(に変化)書いて、私は自然に私はupload_saveメソッドにアクセスするとき、photo.htmlが示されるだろうと思いました。 はphoto.htmlでは、私がphoto.htmlで base.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 %} 

を書きました。 Googleの検証では、私のページにはbase.htmlだけが表示されていたことがわかりました(photo.htmlを読むことができませんでした) どうすればこの問題を解決できますか?

答えて

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()

+0

THXウルのコメントのように見えるはずです。追加のコード のようなviews.pyについて教えてくれましたか?しかし、うまくいきませんでした。間違った点はありますか? – lili

+0

@liliは、ビュー内の最初のリターンを削除します。 –

+0

私は最初の返品を削除しましたが、私のページに同じエラーがありました.... – lili

0

私はあなたがbase.htmlでブロック本体は含まれていなかったと思います。含まれていない場合はphoto.htmlコンテンツを追加したい場所

{% block body %} 
{% endblock %} 

base.htmlにこれらの行を追加しますbase.htmlがこの

{% 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>

関連する問題