0

私は Django を初めて使用し、現在 Django Admin でアップロードされた画像を表示する際に問題が発生しています。ここでスタックオーバーフローに投稿された多くのQとAをフォローしましたが、それらの中で私の問題で機能しました。ここのコーディング忍者のアクティブな人がこの問題を解決してくれることを願っています. 問題の詳細図は次のとおりです。

  1. settings.pyで MEDIA_ROOT と MEDIA_URL を定義しました

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    MEDIA_ROOT = os.path.join(BASE_DIR, "media")
    MEDIA_URL = "/media/"
    
  2. これはmodels.pyの私のアップロード モデルです:

    from django.utils.html import mark_safe
    
    class ImageDetails(models.Model):
        image = models.ImageField(null=True)    
    
        def image_img(self):
            if self.image:
                return mark_safe('<img src="%s" height="125px" width="125px"/>' % (self.image.url))
            else:
                return '(No image found)'
        image_img.short_description = 'Thumbnail'
    
  3. 私のアプリケーションurls.pyで:

    urlpatterns = [
        url(r'^inputImage', views.inputImage, name='inputImage'),
        url(r'', views.index),
    ]
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
  4. 私のadmin.pyで:

    class ImageDetailsAdmin(admin.ModelAdmin):
        fields = ["image"]  #for file upload
        list_display = ("image_img",)
    
    admin.site.register(ImageDetails, ImageDetailsAdmin)
    

イメージはProjectDIR/mediaに正常に保存されました。HTML は URL を返します: http://127.0.0.1:8000/media/imagename.jpg img タグ。しかし、ページは画像の読み込みに失敗します (URL http://127.0.0.1:8000/media/imagename.jpgを使用すると、常にインデックス ページにリダイレクトされます)。Django バージョン 1.10 を使用しています

4

1 に答える 1

0

お察しのとおり、この問題は Django の URL に関するものです。この問題は、アプリの urls.py で次の urlpattern を宣言したために発生しました。

     url(r'', views.index, name='index'),

コードを次のように変更して問題を解決しました。

     url(r'^$', views.index, name='index'),

プロジェクトのメイン urls.py に次のコードを追加します。

    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
于 2016-08-31T15:46:46.550 に答える