2017-09-21 8 views
0

私はplzzを助けます....ユーザーがアップロードしたプロフィール画像と音楽ファイルをテンプレートに表示しようとしています。しかし、何らかの理由で私のコードがうまくいかない。データベースにアップロードされたファイルをdjangoのテンプレートに表示する

アプリ/ models.py

def get_upload_path(instance, filename): 
     return 'users/{0}/{1}'.format(instance.user.username,filename) 

    class UserProfile(models.Model): 
     user = models.OneToOneField(User) 
     picture=models.ImageField(upload_to='profile_images', 
       blank=True) 

     def __unicode__(self): 
      return self.user.username 


    class MusicCollection(models.Model): 
     user = models.ForeignKey(User, null=True) 
     document = models.FileField(upload_to=get_upload_path) 

views.pyアプリ/ forms.py

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

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



    class UserProfileForm(forms.ModelForm): 
     class Meta: 
      model = UserProfile 
      fields = ('picture',) 


    class MusicForm(forms.ModelForm): 
     class Meta: 
      model = MusicCollection 
      fields = ('document',) 

アプリ/

{% if lip %} 
     <ul> 
      <li> <a href="{{ lip.picture.url }}">hi</a></li> 
      <img src="{{ lip.picture.url }}" href="{{ lip.picture.name }}"width="600" height="400"> 
     </ul> 
    {% else %} 
     <p>No documents.</p> 
    {% endif %} 
     <a class="navbar-brand" href="/">Index</a> 

    {% if lim %} 

     <ul> 

     <li><a href="{{ lim.document.url }}"></a>{{ lim.document.name }}</li> 

    </ul> 
    {% else %} 
     <p>No documents.</p> 
    {% endif %} 
のwelcome.html

@login_required 
    def userpage(request): 
     lim =[] 
     lip =[] 
     c_user = request.user 
     music = MusicCollection.objects.filter(Q(user = c_user)) 
     for i in music: 
      lim.append(i) 
      pictures = UserProfile.objects.filter(Q(user = c_user)) 
     for i in pictures: 
      lip.append(i) 
     return render_to_response(request, 'welcome.html',{'lim': lim, 
     'lip':lip}) 

テンプレート/

私はモデルオブジェクトをリストにすることなくそれを渡そうとしましたが、いずれの場合もwelcome.htmlはNo Documentと表示されます。前もって感謝します。

+0

コピー/ペーストエラーと思われるものを修正しました。それが正しいかどうか確認してください。 – Melvyn

答えて

0

これを試してみてください:HTMLで

@login_required 
def userpage(request): 
    musics = MusicCollection.objects.filter(user = request.user)) 
    profile = UserProfile.objects.get(user = request.user)) 
    context= {'musics':musics, 'profile':profile} 
    return render_to_response(request, 'welcome.html',context) 

{% if profile %} 
    <img src="{{profile.picture.url}}" /> 
{% else %} 
    <h3>No Profile Found</h3> 
{% endif %} 

<h1>Musics</h1> 
{% if musics %} 
    {% for music in musics %} 
     <audio controls> 
      <source src="{{music.document.url}}" type="audio/mpeg"> 
     </audio> 
    {% endfor %} 
{% else %} 
    <h3>No Music files Found</h3> 
{% endif %} 

それでも動作しない場合は、フォルダに移動し、ファイルのパーミッションを確認してください。

+0

返信いただきありがとうございますが、「プロフィールが見つかりません」と「音楽ファイルが見つかりません」と表示されます。 "request.user"が何も返さないようです。 –

+0

@Jsdoe、私は答えを更新しました。どうぞご覧ください。解決策が助けになった場合は、問題があれば回答を選択してください。すべての協力に感謝します。 –

+0

ありがとうございますが、依然として同じ出力......、 –

関連する問題