Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django中获取与一个id对应的所有图像_Python_Django - Fatal编程技术网

Python 在django中获取与一个id对应的所有图像

Python 在django中获取与一个id对应的所有图像,python,django,Python,Django,我有一个带有post数据的表和一个带有post_图像并通过post_id连接的表。 现在我需要一个查询集,它将帮助我从表2中获取关于post id的所有图像。我使用的是post\u image=post\u image.objects.filter(post=post),但它提供了空查询集和post\u image=post\u image.objects.filter(post=post.id)正在给我“QuerySet”对象没有属性“id”错误 这是我的完整views.py和view.htm

我有一个带有post数据的表和一个带有post_图像并通过post_id连接的表。 现在我需要一个查询集,它将帮助我从表2中获取关于post id的所有图像。我使用的是
post\u image=post\u image.objects.filter(post=post)
,但它提供了空查询集和
post\u image=post\u image.objects.filter(post=post.id)
正在给我
“QuerySet”对象没有属性“id”
错误

这是我的完整views.py和view.html

Views.py:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render, redirect
from models import Post,Post_image
from django.contrib.auth import (
    authenticate,
    login,
    logout,
    get_user_model,

    )
from django.shortcuts import render,redirect
from django.db.models import Q
from django.http import HttpResponseRedirect,HttpResponse
from django.contrib.auth.models import User
from .forms import UserLoginForm,UserRegisterForm
from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
from django.contrib import messages

# Create your views here.

def Upload(request):
    if request.method=="POST":
     dog = Post_image(
     image=request.FILES.get('image'))
     dog.save()
    return redirect('/index')


def index(request):
    #return HttpResponseRedirect("base.html")
    if request.user.is_authenticated(): #or request.session.get_expiry_age()> 10):
        request.session.set_expiry(600)
        query=request.GET.get('q')
        if query:
            return redirect('/view?q=%s' %query)
        return render(request, "index.html")   
    else:
        return redirect("/login")
def landing(request):
    form=UserLoginForm(request.POST or None)
    title='Sign In'
    if form.is_valid():
        username=form.cleaned_data.get('username')
        password=form.cleaned_data.get('password')
        user=authenticate(username=username, password=password)
        login(request,user)
       # print (request.user.is_authenticated())
        return redirect("/index")
    return render(request, "landing.html", {'form': form, 'title': title})  

def create(request):
  #  dogs.save()
    user = request.user
    #print (user)
    if request.method=="POST":
        post = Post(title=request.POST['title'],
        description=request.POST['description'],
        created_by_user=user,) 
        post.save()

        image=request.FILES.getlist('image')
        print image
        import pdb;pdb.set_trace()
        for x in image:
                 post_image = Post_image(
                 image=x,
                 post=post
                    )         
                 post_image.save()
        import pdb;pdb.set_trace()

    return redirect("/")

def error(request):
    return render(request, '404.html')

def view(request):
    if request.user.is_authenticated(): #or request.session.get_expiry_age()> 10):
        request.session.set_expiry(600)
        user = request.user
        #dogs=Post.objects.all() #For seeing all entries 
        post= Post.objects.filter(created_by_user = user).order_by('-created_at')#[:4] #For seeing user specific entries
        context={'post': post}
        return render(request, 'view.html', context)
    else:
        messages.info(request, 'Session Expired')
        return redirect("/login")


def final(request, id):
    dog=Post.objects.get(id=id)
    context={"dog": dog}
    return render(request, 'final.html', context)

def edit(request, id):
    if request.user.is_authenticated(): #or request.session.get_expiry_age()> 10):
        request.session.set_expiry(600)
        query=request.GET.get('q')
        if query:
            return redirect('/view?q=%s' %query)
        dog=Post.objects.get(id=id)
        context={"dog": dog}
        return render(request, 'edit.html', context)
    else:
        messages.info(request, 'Session Expired')
        return redirect("/login")

def update(request, id):
    dog=Post.objects.get(id=id)
    dog.title=request.POST['title']
    dog.description=request.POST['description']
    if dog.image == None:
        dog.image=request.FILES.get('image')
    elif dog.image != None:
        if request.FILES.get('image') != None:
             dog.image=request.FILES.get('image')
        else:
            dog.image== dog.image
    #dog.image=request.FILES.get('image')
    dog.save()
    return redirect('/view')


def delete(request, id):
    dog=Post_image.objects.get(id=id)
    dog.delete()
    return redirect('/view')

def delete_image(request, id):
    Post.objects.get(id=id).image.delete(save=True)
    return HttpResponseRedirect(('/view'))


def login_view(request):
    #print (request.user.is_authenticated())
    title="Sign in"
    form=UserLoginForm(request.POST or None)
    if form.is_valid():
        username=form.cleaned_data.get('username')
        password=form.cleaned_data.get('password')
        user=authenticate(username=username, password=password)
        login(request,user)
       # print (request.user.is_authenticated())
        return redirect("/index")

    return render(request, "form.html", {"form": form, "title" : title})

def register_view(request):
    title="Register"
    form=UserRegisterForm(request.POST or None)
    if form.is_valid():
        user=form.save(commit=False)
        password=form.cleaned_data.get("password")
        user.set_password(password)
        user.save()
        new_user = authenticate(username=user.username, password=password)
        login(request, new_user)
        return redirect("/login")

    context = {
        "form": form,
        'title': title
    }
    return render(request, "form.html", context)

def logout_view(request):
    logout(request)
    return redirect("/login")
View.html:

  {% extends 'base.html' %}

{% block main_content %}

<div class="content-wrapper">
    <div class="container-fluid">
        {% if post %}
    {% for post in post %}
    </div>
    <div class="strip">
        <div class="row">

        <div class='col-md-8'>
         <h6><a href="/final/{{ post.id }}" class="nav-link js-create-book" data-toggle="modal" data-target="#exampleModal">{{ post.title|title }}</a></h6>
         </div>
          <div class='col-md-4'>
         <a  href="/delete/{{ post.id }}" class='demo'><i class="fa fa-close pull-right"></i></a>
        <a  href="/edit/{{ post.id }}" class='' ><i class="fa fa-pencil pull-right"></i></a>
        </div>
        </div>
        <div class='row'>
         <div class="col-md-10">
             <div class="descrip">
         <p><small>{{ post.description|truncatechars:250 }}</small>
        </p>

</div><!-- descrip ends-->
<p><small><strong>{{ post.created_at }}</strong></small></p>
<!-- <p><small><strong>{{ dog.updated_at }}</strong></small></p> -->
</div><!-- col-md-9 ends-->

<div class="col-md-2 center">

    {% for p in post %}
   {% for image in p.post.all %}
      {{ image.image.url }}
   {% endfor %}
{% endfor %}


</div>


      <div class='img-modal'>
       <a class='image' href='#'>
       <div class='title'>
       <i class='fa fa-close'></i>
     </div></a>
            <img src='' class="img img-responsive change"/> 
                <a href="/delete-image/{{ post.id }}" class='demo'>Delete</a><br/>     
</div>

     </div><!-- strip ends-->
 {% endfor %}

 {% else %}
<h3 class='error'>No Entry yet!!Please add entry.</h3>

{% endif %}
</div>
 {% endblock %}
{%extends'base.html%}
{%block main_content%}
{%if post%}
{post%中的post为%1}
{{post.description}truncatechars:250}

{{post.created_at}}

{post%%中的p的%s} {%用于p.post.all%中的图像} {{image.image.url} {%endfor%} {%endfor%}
{%endfor%} {%else%} 还没有人进来!!请添加条目。 {%endif%} {%endblock%}
您可以对Post\u图像使用反向关系,而不是第二个查询集,在您的情况下,Post\u图像是
Post
Post.Post。模板中的所有
,如下所示:

{% for post in posts %}
   {{ post.id }}   
   {% for image in post.post.all %}
      {{ image.image.url }}
   {% endfor %}
   ----------------  
{% endfor %}
因此,您不必将post_图像传递给上下文,只需离开:

post= Post.objects.filter(created_by_user = user).order_by('-created_at')
context={'posts': post }
return render(request, 'view.html', context)

我做了必要的更改,但得到了错误
TypeError at/view/'Post'对象不可编辑
@SarthakTuteja您是否可以这样查看Post:
Post=Post.objects.filter(由用户创建)。order\u by('-created_at')
?以后可能重写了
post
变量?看起来像是
post
包含单个对象而不是queryset。我编辑了我的问题以向您展示我的完整views.py和view.html,我正在重写post变量(我猜),但我找不到确切的位置。@SarthakTuteja在视图中尝试更改
上下文={'posts':post}
和模板中的
{%for post in%}
谢谢,放弃了第一个for循环不知怎么对我起了作用。你能给我一些解释和/或一些文档,以便我能理解这个概念并在将来使用它吗??