首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上传图像文件和常规表单数据

上传图像文件和常规表单数据
EN

Stack Overflow用户
提问于 2019-10-02 12:10:58
回答 1查看 1.5K关注 0票数 1

我正在与VueJS一起使用django。数据正在我的数据库中正确更新。

我需要完成两件事--

将正确的内容发送到image_file.

  • Get字段,将下载的图像文件粘贴到服务器文件夹,即media/shop/images

我尝试的代码如下所示:

models.py

代码语言:javascript
复制
...
image_file = models.ImageField(upload_to='shop/images/', blank=True, null=True)

urls.py

代码语言:javascript
复制
...
urlpatterns += [
   url(r'^Post-Items-Axios$', myviews.Post_Items_Axios, name='Post-Items-Axios'),
]

views.py

代码语言:javascript
复制
@api_view(['GET', 'POST', 'PUT', 'DELETE'])
def Post_Items_Axios(request):
    if request.method == 'POST':
        data_itemfullhd = request.data['Item Name']
        data_image_file = request.data['Item Image File']

        td_items, created = Md_Items.objects.get_or_create(
            itemfullhd = data_itemfullhd)

        td_items.imagefl = data_imagefl
        td_items.image_file = data_image_file
        td_items.save()

    data = { 'data_itemfullhd': data_itemfullhd }
    return Response(data)

bm_home.html

代码语言:javascript
复制
<template id="product-edit">
    <div>
    <h2>Product details</h2>
    <form method="post" enctype="multipart/form-data">{% csrf_token %}
        <div class="form-group">
            <label for="edit-name">Item Name</label>
            <input class="form-control" id="edit-name" v-model="product.itemfullhd" required/>
        </div>

        <!-- Upload single Image files -->
        <div class="form-group">
            <label for="edit-imagefile">Image</label>
            <input type="file" id="edit-imagefile" @change="onFileChanged" required/>
        </div>

        <button type="submit" class="btn btn-primary" @click.prevent="updateProduct">Save</button>
        <a class="btn btn-dark"><router-link to="/product-list">Cancel</router-link></a>
    </form>
    </div>
</template>

Vue模板

代码语言:javascript
复制
var ProductEdit = Vue.extend({
    template: '#product-edit',
    data: function () {
        return {
            product: findProduct(this.$route.params.product_id),
            selectedImage: null,
        };
    },
    methods: {
        onFileChanged (event) {
            this.selectedImage = event.target.files[0]
            this.product.image_file = this.selectedImage.name
        },
        updateProduct: function () {
            let product = this.product;
            products[findProductKey(product.id)] = {
                id: product.id,
                itemfullhd: product.itemfullhd,
                image_file: product.image_file,
            };
            const data = {
                "Item Name": product.itemfullhd,
                "Item Image File": product.image_file,
            }
            // const formData = new FormData()
            // formData.append('image_file', this.selectedImage, this.selectedImage.name)
            // axios.post('/biggmount_home/Post-Items-Axios', formData, data)

            axios.post('/biggmount_home/Post-Items-Axios', data)
            router.push('/product-list');
        },
    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-02 15:37:15

以下的变化给了我我所期待的结果:

Vue模板

代码语言:javascript
复制
var ProductEdit = Vue.extend({
    template: '#product-edit',
    data: function () {
        return {
            product: findProduct(this.$route.params.product_id),
            selectedImage: null,
        };
    },
    methods: {
        onFileChanged (event) {
            this.selectedImage = event.target.files[0]
        },
        updateProduct: function () {
            let product = this.product;
            const formData = new FormData()
            formData.append('Item Image', this.selectedImage, this.selectedImage.name)
            formData.append('Item Name', product.itemfullhd)
            axios.post('/biggmount_home/Post-Items-Axios', formData)
            router.push('/product-list');
        },
    }
});

views.py

代码语言:javascript
复制
@api_view(['GET', 'POST', 'PUT', 'DELETE'])
def Post_Items_Axios(request):
    if request.method == 'POST':
        data_itemfullhd = request.data['Item Name']
        td_items, created = Md_Items.objects.get_or_create(
            itemfullhd = request.data['Item Name'],
            )
        td_items.image_file = request.data['Item Image']

        td_items.save()
    return HttpResponse('Success!')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58201256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档