Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Django 在模板中上载图像_Django_Templates_Django Forms - Fatal编程技术网

Django 在模板中上载图像

Django 在模板中上载图像,django,templates,django-forms,Django,Templates,Django Forms,我的问题是,如果我从管理员上传一个图像,它可以正常工作,但如果我想从我的模板添加一个图像,似乎我的图像没有上传。 这和请求中一样奇怪。发布表单中,我的图像路径出现了 我没有错误的信息 这是我的模型: class Listing(models.Model): title = models.CharField('Title',max_length=64, blank=False) description = models.TextField('Descritpion', blank=

我的问题是,如果我从管理员上传一个图像,它可以正常工作,但如果我想从我的模板添加一个图像,似乎我的图像没有上传。 这和请求中一样奇怪。发布表单中,我的图像路径出现了

我没有错误的信息

这是我的模型:

class Listing(models.Model):
    title = models.CharField('Title',max_length=64, blank=False)
    description = models.TextField('Descritpion', blank=False)
    Creation_date = models.DateField(auto_now_add=True)
    enddate= models.DateField('Ending Date', blank=False)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="category")
    initialBid = models.DecimalField('Bid', max_digits=12, decimal_places=2, blank=False)
    photo = ResizedImageField(size=[300, 150], upload_to='images/', default='images/default.jpg')
    active = models.BooleanField('Active', default=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="author")

    def __str__(self):
        return f"{self.id} : {self.title} {self.initialBid} {self.Creation_date}"

    def save(self, *args, **kwargs):

        # Check how the current ending date is after created date,
        d1 = self.Creation_date
        d2 = self.enddate
        if d2 <= d1:
            raise ValueError("End date must be a day after today")
        super(Listing, self).save(*args, **kwargs)
我的模板:

<h2>{% if not form.instance.pk %}Create listing {% else %} Edit {% endif %}</h2>
    <form id="create-edit-client" class="form-horizontal"  action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.title|as_crispy_field }}

        {{ form.description|as_crispy_field }}

            <br>
        <div class="row">
            <div class="col-3">
            {{ form.category|as_crispy_field }}
            </div>
            <div class="col-2">
            {{ form.initialBid|as_crispy_field }}
            </div>
        </div>
    <br>
        <div class="row">
            <div class="col-3">
                {{ form.enddate|as_crispy_field }}
            </div>

            <div class="col-2">
            {{ form.active|as_crispy_field }}
            </div>

        </div>
    <br>
        {{ form.photo|as_crispy_field }}
            <br>
            <br>

    </form>
在URL中:

urlpatterns = [
   ......
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我的看法:

@login_required
def editlisting(request, listing_id):
    obj = Listing.objects.filter(pk=listing_id).first()
    if obj is None:
        return render(request, "errors/404.html", {
            "entryTitle": listing_id
        })
    else:
        form = NewListingForm(instance=Listing.objects.get(pk=listing_id))
        modification=True # used in template to check if modification are allowed
        # read only form if not author
        user = request.user.id
        if obj.author.id != user:
            modification=False

        # manage save
        if request.method == "POST":
            form = NewListingForm(request.POST, instance=Listing.objects.get(pk=listing_id))

            if form.is_valid():
                form.save()
                messages.success(request, 'listing saved')  # message for inform user of success - See messages in html file
                return HttpResponseRedirect(reverse("index"))

        # check if in wishes on get
        wishbool=False
        wish = Wishing.objects.filter(item=listing_id, follower=request.user.id).first()
        if wish is not None:
            wishbool = True

        return render(request, 'auctions/newListing.html', {
            "form": form,
            "existing": True,
            'title': "Edit Listing",
            "wishing": wishbool,
            "modification":modification
        })

感谢帮助

获取您需要的图像或文件,并通过另一个名为request.files的请求,因此:

form = NewListingForm(request.POST, request.FILES,instance=Listing.objects.get(pk=listing_id))
@login_required
def editlisting(request, listing_id):
    obj = Listing.objects.filter(pk=listing_id).first()
    if obj is None:
        return render(request, "errors/404.html", {
            "entryTitle": listing_id
        })
    else:
        form = NewListingForm(instance=Listing.objects.get(pk=listing_id))
        modification=True # used in template to check if modification are 
        allowed
        # read only form if not author
        user = request.user.id
        if obj.author.id != user:
            modification=False

        # manage save
        if request.method == "POST":
            form = NewListingForm(request.POST, request.FILES,
instance=Listing.objects.get(pk=listing_id))

            if form.is_valid():
                form.save()
                messages.success(request, 'listing saved')  # message for 
inform user of success - See messages in html file
                return HttpResponseRedirect(reverse("index"))

        # check if in wishes on get
        wishbool=False
        wish = Wishing.objects.filter(item=listing_id, 
follower=request.user.id).first()
        if wish is not None:
            wishbool = True

        return render(request, 'auctions/newListing.html', {
            "form": form,
            "existing": True,
            'title': "Edit Listing",
            "wishing": wishbool,
            "modification":modification
           })

让我看看你的观点,请在我的留言末尾写出来。抱歉忘记找不到:/media/JPEG\u example\u flower.jpg[25/Sep/2020 18:17:47]“GET/media/JPEG\u example\u flower.jpg HTTP/1.1”404 1836未通过:if form.is\u valid()。。。但这就是我尝试上载pictureurlpatterns+=static(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)urlpatterns+=static(settings.static\u URL,document\u root=settings.static\u root)打印请求的地方。文件…您从中得到了什么?打印:
form = NewListingForm(request.POST, request.FILES,instance=Listing.objects.get(pk=listing_id))
@login_required
def editlisting(request, listing_id):
    obj = Listing.objects.filter(pk=listing_id).first()
    if obj is None:
        return render(request, "errors/404.html", {
            "entryTitle": listing_id
        })
    else:
        form = NewListingForm(instance=Listing.objects.get(pk=listing_id))
        modification=True # used in template to check if modification are 
        allowed
        # read only form if not author
        user = request.user.id
        if obj.author.id != user:
            modification=False

        # manage save
        if request.method == "POST":
            form = NewListingForm(request.POST, request.FILES,
instance=Listing.objects.get(pk=listing_id))

            if form.is_valid():
                form.save()
                messages.success(request, 'listing saved')  # message for 
inform user of success - See messages in html file
                return HttpResponseRedirect(reverse("index"))

        # check if in wishes on get
        wishbool=False
        wish = Wishing.objects.filter(item=listing_id, 
follower=request.user.id).first()
        if wish is not None:
            wishbool = True

        return render(request, 'auctions/newListing.html', {
            "form": form,
            "existing": True,
            'title': "Edit Listing",
            "wishing": wishbool,
            "modification":modification
           })