【问题标题】:How can I store a file path in Mysql database using django?如何使用 django 在 Mysql 数据库中存储文件路径?
【发布时间】:2016-10-18 18:23:41
【问题描述】:

我需要使用 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

提前致谢:)

【问题讨论】:

  • 您是说数据库字段包含字符串“”?
  • 是的!在 f_name 列中它只存储

标签: python mysql ajax django


【解决方案1】:

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

1.文件上传

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

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

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

您的代码示例正在存储“”,因为您分配的是“文件”(这是一种内置类型),而不是您之前声明的 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')

【讨论】:

  • 我只想将本地目录的文件路径保存到数据库中,我试过这样做,它对我不起作用。
  • 存储在数据库中的值是否发生了变化?如果您在 shell 中打开 python,然后键入“file”,shell 将打印内置 File 类的字符串表示形式。所以很明显,该字段被分配了“文件”对象,而不是正确的 POST 数据。另一种可能性是 request.POST.get('file') 导致问题。也许尝试给 POST 数据字段一个不冲突的不同名称。
  • 谢谢,很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 2015-01-15
相关资源
最近更新 更多