如何使用django在Mysql数据库中存储文件路径?

时间:2016-10-18 18:23:41

标签: python mysql ajax django

我需要使用django通过ajax表单提交在db中存储文件路径。

以下是我的观点:

def dashboard(request):
    container=[]
    DIR = os.path.realpath("/home/user/Desktop/Demo")
    WAY = os.listdir(DIR)
    for file in WAY:
        if file.endswith('.mp4'):
            file_name = file
            FDIR=os.path.join(DIR, file)
            container.append(FDIR)
            
    return render(request, 'dashboard.html', {'container': container})

def new_scheduler(request):
    if request.method =='POST':
        f_name = request.POST.get('file')
        dateAndTime = request.POST.get('dateAndTime')
    Scheduled_data = schedulesdb.objects.create(
            f_name = file,
            dateAndTime = dateAndTime,  
        )
    Scheduled_data.save()
    return HttpResponse ('done')

它保存在<type 'file'>等数据库中。

这是我的model.py:

class schedulesdb(models.Model):
    f_name = models.CharField(max_length=100)
    dateAndTime = models.DateTimeField(['%Y-%m-%d %H:%M:%S'],null=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=2)
    def __unicode__(self):              #  on Python 2
        return self.f_name

提前致谢:)

1 个答案:

答案 0 :(得分:1)

从您的代码中,您不是100%清楚您是否打算从客户端处理文件上传,或者只是存储恰好是文件路径的字符串(可能用于在某些远程上查找文件)文件系统)。

<强> 1。文件上传

考虑使用FileField模型字段类型而不是CharField。

Django文档有一个可靠的解释和如何做简单file uploads的例子。

<强> 2。获取f_name字段的实际POST数据值

您的代码示例正在存储&#34;&#34;,因为您正在分配&#39;文件&#39; (这是内置类型)而不是您之前声明的f_name变量。像这样:

def new_scheduler(request):
if request.method =='POST':
    f_name = request.POST.get('file')
    dateAndTime = request.POST.get('dateAndTime')
Scheduled_data = schedulesdb.objects.create(
        f_name = f_name, # Note the use of f_name instead of file
        dateAndTime = dateAndTime,  
    )
Scheduled_data.save()
return HttpResponse ('done')