【问题标题】:Django - Insert data from uploaded excel file in the database modelDjango - 在数据库模型中插入上传的 excel 文件中的数据
【发布时间】:2020-03-15 23:30:28
【问题描述】:

我正在尝试使用上传的 xlsx 文件中的数据填充数据库。

我已按照本教程中的步骤进行操作:https://buildmedia.readthedocs.org/media/pdf/django-excel/latest/django-excel.pdf

在我的情况下,上传后出现 404 错误页面,而 Web 服务器错误日志文件仅显示:

[Sun Mar 15 20:31:11.075408 2020] [wsgi:error] [pid 6756] [remote 192.168.1.7:53883] Bad Request: /Project/store/

我不知何故被困在这一点上……我/我认为该表格无效,但为什么呢?

从models.py中提取

class Store(models.Model):
    code = models.CharField(max_length=100, unique=True)
    name = models.TextField()
    address = models.TextField()
    city = models.CharField(max_length=100)
    zip = models.IntegerField()
    def __str__(self):
        return self.cod+" "+self.nume
    class Meta:
        ordering = ["cod"]
        verbose_name_plural = "Stores"

从 view.py 中提取

class UploadFileForm(forms.Form):
    file = forms.FileField()

def store(request):
    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            request.FILES['file'].save_to_database(
                model=Store,
                mapdict=['code', 'name', 'address', 'city', 'zip'])
            return HttpResponse("OK")
        else:
            return HttpResponseBadRequest()
    else:
        return render(request, 'store.html', {})

从模板中提取 - store.html

<form action="{% url "store" %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <div class="form-group mb-4 mt-3">
        <label for="exampleFormControlFile1">Excel file ONLY !</label>
        <input type="file" title="Upload excel file" name="excel_file"
 class="form-control-file" id="exampleFormControlFile1" required="required">
    </div>
    <input type="submit" value="Upload" name="time" class="mt-4 mb-4 btn btn-primary">
</form>

xlsx 文件数据

code    | name      | address           | city      | zip
    1   | Store01   | 191-st, Main street       | Calhounn  | 7000
    2   | Store02   | 277-th, River streetGaleria   | Verdounne | 9000

【问题讨论】:

  • 您是在本地访问它还是从另一个使用 IP 地址192.168.1.7:53883 的设备访问它?\
  • 我正在使用托管在同一台机器 (192.168.1.7) 上的 Bitnami VM (192.168.1.3)。

标签: django excel database file-upload populate


【解决方案1】:

您必须使用“文件”作为 html 中输入元素的名称。

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2018-09-26
    • 1970-01-01
    • 2015-08-16
    • 2018-12-31
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多