django画像をページに読み込む


31、まず、models.pyのモデルを見てみましょう.upload_toのパラメータがあります.過去と一刀両断するために、スレ主はupload_toavatar/という新しい値を与えることにしました.このパラメータの意味は、ファイルをMEDIA_ROOT/avatar/の下にアップロードすることです.
  • ここでupload_toの値がMEDIA_ROOT/の経路に接続された一部である以上、avatar/または./avatar/と書くしかなく、/avatar/と書くことができず、スレ主はすでに身をもって試したことがある.
  • もう一つ、ここではMEDIA_ROOTと言いましたが、私たちはずっと設置したことがありません.
  • headImg = models.FileField(upload_to='avatar/')
    

    32、だから当然のことながらMEDIA_ROOTを設置しなければならないので、settings.pyの中で以下のように設定します.ここでは、プロジェクトのルートディレクトリの下にmediaフォルダを新設し、mediaファイルを保存するために使用します.上記の設定に合わせて、アップロードしたファイルは/media/avatar/の下に配置されます.
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", "/")```
    
    33、 `MEDIA_ROOT`          , ……     。           ,              :    ,             url, Django   url,    `urlpatterns`      。
    
    34、  ,             :       url       ,         ,    ,                   。
    -   ,       url   ,   ,      `/media/avatar/` ,              `/media/avatar/` ,                           ,         `/media/thumb/`,            `/media/`    url   。
    

    MEDIA_URL = '/media/'
    -        `MEDIA_ROOT` `MEDIA_ROOT`      ,          。
    
    34、      , `urlpatterns`   ,               ,                          ,                 `views`      ,              ,           ,   `static(         url,          )`

    この2つのパッケージをインポート
    setting.py中
    from django.conf import settingsfrom django.conf.urls.static import static
    urlpatterns = [...] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)```
    35、もしあなたが前に探求している間にブラウザがどんなエラーを出力するかをよく見ていたら、あなたは一般的に404 error500 errorかを見ていました.なぜ404 errorが出てきたのかというと、私たちが与えた画像の経路がurlpatternsで定義されていないため、Djangoは画像を展示しようとしたとき、見てみると、あれ、これは何の鬼urlなのか、urlpatternsではまったく対応していないので調べることができるので、間違った要求サイトで、404 errorに戻ります.urlpatternsに追加すると、404 errorはありません.
    36、はい、最後のステップは、imgsrcに正しい画像アドレスを記入することです.私たちは前に画像が/media/avatar/の下に保存されていると言ったので、画像の経路は:
    <img src="/media/{{user.headImg}}" alt=""/>
    
  • は、データベースに格納されているピクチャパスがupload_toの値と、次のavatar/test_mini.jpgのようなピクチャ名との結合であるためである.