2016-05-11 2 views
0

私はまだDjangoとURLの周りに頭を抱えています。私の混乱は今私が非常に単純な作業であるべきであると感じることを私にさせません。Djangoはユーザーがアップロードしたコンテンツを表示します

ファイルのアップロードに成功しました。

私のsettings.pyファイルには、アップロードされたファイルを格納する場所と、Djangoがそれらを提供するために使用するURLの仕様が追加されています。

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL= '/media/' 

また、DjangoがMEDIA_URLからファイルを提供できるように、urls.pyに必要な行を追加しました。

from django.conf.urls import url, include 
from django.contrib import admin 
from login_app import views as login_app_views 
from django.conf import settings 
from django.conf.urls.static import static 


urlpatterns = [ 
    url(r'^admin/',  admin.site.urls), 
    url(r'^login/',  login_app_views.login_user), 

    # creating registered namespaces for each app 
    url(r'^login/',  include('login_app.urls',  namespace = "login_app")), 
    url(r'^CMIRS/',  include('dashboard_app.urls', namespace = "dashboard_app")), 
    url(r'^CMIRS/',  include('submit_app.urls',  namespace = "submit_app")), 
    url(r'^CMIRS/',  include('filter_app.urls',  namespace = "filter_app")), 
    url(r'^CMIRS/case/',include('report_app.urls',  namespace = "report_app")), 
    url(r'^CMIRS/',  include('search_app.urls',  namespace = "search_app")), 
    url(r'^search/', include('haystack.urls')), ##used in navbar-search 

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

アプリreport_appでは、アップロードされたファイルを表示するために使用できるハイパーリンクをWebページに表示します。ハイパーリンクをクリックすると、アップロードされたファイルのURLを要求します。

アップロードが私のモデルでは、このような次のようになります。

upload1 = models.FileField(upload_to = 'documents/%Y/%m/%d/') 

私は私の見解でレンダリング(リクエスト)で使用するものを考え出す問題が発生したとどのように正しくHTMLでこれをコードにしています。 「メディア」を使用しようとすると、マッチできないというエラーが表示されます。ここで

は私がしようとしているHTMLの抜粋です:私も設定する方法として混乱してい

<dt>Upload</dt><dd><tr><td><a href="{% url 'media' case.pk %}">{{ case.upload1 }}</a></td></tr></dd> 

私の(リクエスト)のレンダリングには、メディア/にアクセスし、その後に行くことを知っているように、主キーに応じて文書/ Y/M/Dを修正してください。

答えて

2

ここではurlタグを使用したくない場合があります。あなたのメディアのURLはモデルに保存されており、Djangoのパス解決ロジックとは関係ありません。

<a href="{{ case.upload1.url }}"> 

the docsを参照してください:ちょうどフィールドのurl方法を参照します。

(このようなあなたのurls.pyを経由してファイルを提供するだけdev内に動作していることにも注意;。PRODのためにあなたがそれを行うには、あなたのWebサーバを設定する必要があります)

+0

感謝!レンダリング(リクエスト、テンプレート、コンテキスト)リクエストのフォーマット方法に関するアドバイスはありますか?私はテンプレートを必要としないと仮定しています。アップロードされたファイルを表示したいだけですが、ファイルのURLを正しくアドレス指定する方法を理解できません。 – led4966

+0

いいえ、あなたが何を言っているのか分かりません。 –

+0

申し訳ありませんそれは私の問題とは関係ないからです。あなたが私に提供した新しいコードは私にエラーを投げかけていませんが、実際のハイパーリンクをクリックすると私はファイルに転送されません。それが正しく機能するためには、何を追加する必要がありますか? – led4966

関連する問題