2017-08-13 126 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