django从模板上传图像文件 [英] django upload image file from templates

查看:135
本文介绍了django从模板上传图像文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每一个,我可以从管理网站上传图像,但不知道如何从模板上传图像,

every one ,,I can upload image from admin site,, but do not know how to upload image from the templates,,


models.py

models.py



from django.db import models
from django.contrib.auth.models import User
from PIL import Image
from django.utils import timezone



def get_imagep_Product(instance, filename):
    return '/'.join(['products', instance.slug, filename])


class ProductsTbl(models.Model):
    model_number = models.CharField(max_length=255, blank=True, null=True)
    name = models.CharField(max_length=255, blank=True, null=True)
    material = models.TextField(blank=True, null=True)
    feature = models.TextField(blank=True, null=True)
    created = models.DateTimeField(editable=False)
    modified = models.DateTimeField(auto_now=True)
    release = models.DateTimeField(blank=True, null=True)
    submit_date = models.DateTimeField(blank=True, null=True)
    slug = models.SlugField(unique=True)
    user = models.ForeignKey(User, blank=True, null=True)
    image = models.ImageField(upload_to=get_imagep_Product, blank=True) #image file 

    def __unicode__(self):
        return self.name
    def save(self, *args, **kwargs):
        ''' On save, update timestamps '''

        if not self.id:
            self.created = timezone.now()
        return super(ProductsTbl, self).save(*args, **kwargs)




views.py

views.py



from django.shortcuts import render,redirect
from .forms import ProductsTblForm
from .models import ProductsTbl
from django.template.defaultfilters import slugify
from django.contrib.auth.decorators import login_required
from django.http import Http404,HttpResponse
import datetime

def create_thing(request):
    form_class = ProductsTblForm

    if request.method == 'POST':

        form = form_class(request.POST)
        if form.is_valid():

            thing = form.save(commit=False)

            thing.user = request.user
            thing.slug = slugify(thing.model_number)

            thing.save()

            return redirect('thing_detail', slug=thing.slug)

    else:
        form = form_class()
    return render(request, 'things/create_thing.html', { 'form': form,})




urls.py

urls.py



from django.conf.urls import patterns, url,include
from django.contrib import admin
from django.views.generic import TemplateView
from designer import views
from designer.backends import MyRegistrationView
from django.conf import settings

urlpatterns = [
    url(r'^create_thing/$', views.create_thing, name='create_thing'),
]

if settings.DEBUG:
    urlpatterns += [
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
    ]




py

forms.py



from django.forms import ModelForm
from .models import ProductsTbl


class ProductsTblForm(ModelForm):
    class Meta:
        model = ProductsTbl
        fields = ('model_number','name','feature', 'material','release','image',)




create_thing。 html

create_thing.html



{% extends 'base.html' %} {% block title %}
Create a Thing - {{ block.super }} {% endblock title %}
{% block content %}
<h1>Create a Thing</h1>
<form role="form" action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock content %}

当我点击创建我可以看到的形式但是我不知道如何让图像上传

when I click the create things I can see form here,,however I do not know how can let the image upload

我正在寻找此链接,但我不知道如何让它在我的应用程序中工作

I have looking for this link ,,however I do not know how to let it work in my app,,

推荐答案

首先,您需要添加 enctype =multipart / form-data / code>在您的< form> 定义。因为这是文件上传所需的。

First, you will need to add enctype="multipart/form-data" in your <form> definition. As this is required for file uploads.

<form role="form" action="" method="post" enctype="multipart/form-data">

第二,而不是 form_class(request.POST)您将需要通过传递 request.FILES 在您的视图中创建表单。

Second, instead of form_class(request.POST) you will need to create form in your view by passing request.FILES too.

form_class(request.POST, request.FILES)

这篇关于django从模板上传图像文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆