2017-08-13 13 views
1

ログインしたユーザーに写真を表示させようとしています。既にdbに保存されている画像は、ログインすると表示されるだけです。私は、彼らがログインした後、ユーザーが自分の写真を見ていしようとしています :データベース経由でDjangoからイメージを取得するには?

モデル:

は、ここに私のモデル&フォームです。既にdbに保存されている画像は、ログインすると表示されるだけです。

モデル:: クラス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 

フォーム:Views.pyで

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') 

ここ

は私のモデルは&フォームです

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

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

にしてください、あなたのviews.pyとHTMLテンプレート –

+0

のショーコード編集されたバージョンを参照してください! –

答えて

0

は、私はあなたが交換する必要があると思う:

profile_form = UserProfileInfoForm(data=request.POST) 

詳細django file-uploads

関連する問題