2017-04-02 75 views
0

hello我有两个不同的项目,一个项目只有身份验证,其他只有fileupload并且上传到每个用户的个人文件夹(从管理员模式下工作正常),我想连接一个项目。 在第二个项目中,我创建了一个功能,为任何想要上传文件的用户创建新的个人文件夹,使用user_id,user_username(我需要许多类似的方法来完成此功能,这是测试)。使用Django验证上传文件

我不知道是怎么拿user_iduser_name登录的用户以及如何在views.py中使用它到我的功能generate_path。 我的事情,所以也许这样user = Photo.objects.get(user__id=user_id),但我不知道

def generate_path(user): 
    return "/{0}/img".format(user.username) 


class Photo(models.Model): 
    user = models.ForeignKey(to=settings.AUTH_USER_MODEL) 
    file = models.FileField(upload_to=upload_to=generate_path(self.user))) 

views.py

@login_required 
class BasicUploadView(View): 
    def get(self, request): 
     photoslist = Photo.objects.all() 
     return render(self.request, 'index.html', {'photos': photoslist}) 

    def post(self, request): 
     form = PhotoForm(self.request.POST, self.request.FILES) 
     if form.is_valid(): 
      photo = form.save() 
      data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url} 
     else: 
      data = {'is_valid': False} 
     return JsonResponse(data) 

回答

0

如果我没有理解好了,你想获得视图中的登录用户。 在Django中,如果用户登录成功,那么该对象在request.user中可用,您可以使用它来检索Photo中的记录,如您所述。

def get(self, request): 
    # retrieve photos from logon user 
    Photo.objects.get(user=request.user) 
+0

在'generate_path'我使用'user_id'正确吗?那个ID必须在视图中用某种方式定义,保存在正确的路径中?或者如果用户登录然后从Django自动执行? –

+0

您需要确保在管理员模式下发布 – micebrain

+0

时保存用户字段正常工作 –