2017-08-13 125 views
1

我想讓用戶在登錄後看到他們的照片。已經保存到數據庫的圖像,我只需要它登錄後出現。如何通過數據庫從Django中檢索圖像?

這裏是我的模型&形式:

型號: 我想有用戶看到自己的照片,一旦他們登錄。已經保存到數據庫的圖像,我只需要它登錄後出現。

這裏是我的模型&形式:

型號: 類UserProfileInfo(models.Model):

class UserProfileInfo(models.Model): 

    # Create relationship (don't inherit from User!) 
    user = models.OneToOneField(User) 

    # Add any additional attributes you want 
    portfolio_site = models.URLField(blank=True) 
    # pip install pillow to use this! 
    profile_pic = models.ImageField(upload_to='profile_pics',blank=True) 

    def __str__(self): 
     # Built-in attribute of django.contrib.auth.models.User ! 
     return self.user.username 

形式:

class UserForm(forms.ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput()) 

    class Meta(): 
     model = User 
     fields = ('username','email','password') 

class UserProfileInfoForm(forms.ModelForm): 
    class Meta(): 
     model = UserProfileInfo 
     fields = ('portfolio_site','profile_pic') 
在Views.py

def register(request): 
    registered = False 
    if request.method == 'POST': 
     # Get info from "both" forms 
     # It appears as one form to the user on the .html page 
     user_form = UserForm(data=request.POST) 
     profile_form = UserProfileInfoForm(data=request.POST) 

     # Check to see both forms are valid 
     if user_form.is_valid() and profile_form.is_valid(): 
      # Save User Form to Database 
      user = user_form.save() 
      # Hash the password 
      user.set_password(user.password) 
      # Update with Hashed password 
      user.save() 
      # Now we deal with the extra info! 
      # Can't commit yet because we still need to manipulate 
      profile = profile_form.save(commit=False) 
      # Set One to One relationship between 
      # UserForm and UserProfileInfoForm 
      profile.user = user 
      # Check if they provided a profile picture 
      if 'profile_pic' in request.FILES: 
       print('found it') 
       # If yes, then grab it from the POST form reply 
       profile.profile_pic = request.FILES['profile_pic'] 
      # Now save model 
      profile.save() 
      # Registration Successful! 
      registered = True 
     else: 
      # One of the forms was invalid if this else gets called. 
      print(user_form.errors,profile_form.errors) 
    else: 
     # Was not an HTTP post so we just render the forms as blank. 
     user_form = UserForm() 
     profile_form = UserProfileInfoForm() 
    # This is the render and context dictionary to feed 
    # back to the registration.html file page. 
    return render(request,'basic_app/registration.html', 
          {'user_form':user_form, 
          'profile_form':profile_form, 
          'registered':registered}) 
+0

請您views.py和HTML模板 –

+0

的節目代碼,請參閱編輯的版本! –

回答

0

我認爲你需要更換:

profile_form = UserProfileInfoForm(data=request.POST) 

profile_form = UserProfileInfoForm(request.POST, request.FILES) 

詳情django file-uploads