2018-11-22 Django 上傳文件

    <div class="modal fade" id="modal-add-family">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">添加家系</h4>
                </div>
                <div class="modal-body">
                    <div class="box-body">
                        <form class="form-horizontal" action="/app/add_family/" method="post"
                              enctype="multipart/form-data">
                            {% csrf_token %}
                            <div class="form-group">
                                <label class="col-sm-2 control-label">編號</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control" name="number"
                                           placeholder="系統(tǒng)編號">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">家系名稱</label>
                                <div class="col-sm-10">
                                    <input type="text" class="form-control" name="name" required="required"
                                           placeholder="家系名稱">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-2 control-label">家系圖</label>
                                <div class="col-sm-10">
                                    <input type="file" class="form-control" name="file" required="required">
                                    <p class="help-block">請點(diǎn)擊按鈕上傳家系圖</p>
                                </div>
                            </div>
                            <input type="submit" value="Submit" class="hidden" id="add_submit"/>
                        </form>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default pull-left" data-dismiss="modal">取消</button>
                    <button type="submit" class="btn btn-primary" id="add_item">添加</button>
                </div>
            </div>
        </div>
    </div>

后臺接收:

@require_POST
@login_required(login_url='/app/login')
def add(request):
    number = request.POST.get("number", None)
    name = request.POST.get("name", None)
    file = request.FILES.get("file", None)
    if not name or not file:
        message = "請完善上傳信息"
    else:
        try:
            family = Family(number=number, name=name, image=file)
            family.save()
            message = "添加家系成功!"
        except:
            message = "添加家系失??!"
    s = SampleList()
    return s.get(request, message=message)

Model:

def family_directory_path(instance, filename):
    maxid = max(obj.id for obj in FilePath.objects.all())
    prefix = FilePath.objects.get(id=maxid).path
    return '{0}/family/{1}/{2}'.format(prefix, instance.pk, filename)


class Family(Base):
    class Meta:
        verbose_name = '家系信息'
        verbose_name_plural = '家系信息'

    def __str__(self):
        return f'{self.pk} - {self.name}'

    def natural_key(self):
        return self.name

    number = models.CharField(max_length=64, blank=True, null=True, verbose_name='編號')
    name = models.CharField(max_length=64, blank=True, null=True, verbose_name='名稱')
    image = models.ImageField(upload_to=family_directory_path, blank=True, null=True, verbose_name='家系圖')
    family_disease = models.ForeignKey(FamilyDisease, blank=True, on_delete=models.SET_NULL, null=True, verbose_name='家族病史')
    family_disease_abstract = models.TextField(blank=True,null=True,verbose_name='家族病史描述')

注意點(diǎn)-- <form enctype="multipart/form-data"> 這里一定要寫, 否則提交的只是文件名, 而且不在 FILES 里面 而是放在了 POST 里面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容