2017-04-02 119 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

時保存用戶字段正常工作 –