我需要使用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
提前致谢:)
答案 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')