django 010 | Media


メディア実習

  • setting.py設定(すべての静的およびメディアに接触する前に設定を処理)
  • MEDIA_ROOT = '/media/'
  • mediaのURLを表示
    MEDIA_URL = os.path.join(BASE_DIR, 'media')
  • ユーザがファイルをアップロードする集合点
  • =>次の2つを設定します.pyに追加
    STATICFILES_DIRS=[os.path.join(BASE_DIR, 'blog', 'static')]
    #현재 static 파일들이 어디에 있는지
    STATIC_ROOT= os.path.join(BASE_DIR, 'static')
    #static 파일을 어디에 모을건지
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
    #media의 url을 표시해둔다
    MEDIA_URL = '/media/'
    # 이용자가 업로드한 파일을 모으는 곳
  • URL周期
  • を設定する.
    (1)下記の子をURLに追加する
    from django.conf import settings
    from django.conf.urls.static import static
    (2)url patterns=[]静的を追加
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('',home, name="home"),
        path('blog/', include('blog.urls'))
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    => + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • モデルは
  • を修正し、ユーザーが写真のアップロードとダウンロードを許可する.
  • モデルに追加:image=models.ImageField(upload_to="blog/")
    =>upload to:アップロードするファイルを指定します.set.
  • を設定し、pyでMEDIA URLとして指定されたメディアフォルダにblogフォルダを作成および管理します.
    =>画像が存在しない場合はblank="True"を設定する必要があります.
    : image=models.ImageField(upload_to="blog/", blank='True', null='True')
  • イメージフィールドパッド枕
  • を使用
    pip install pillow

  • モデルが変更されました.移動してください.
    (1) python manage.py makemigrations
    (2) python manage.py migrate

  • でもこれじゃ.

    いきなりイメージコラムが増えて、既存のデータがびっくり~
  • そしてエラー=>OperationalError at/
    no such column: blog_blog.image

    したがって、現在作業中のファイル=>project=>apple=>migrationsを削除し、0001~0002で始まる友人を削除し、migration内にpychaeという友人を加え、initを削除し、すべて削除すればよい.


    次に、プロジェクトのdbです.sqlite 3の削除
    その後、makemigration、migrate、サーバの回転を行い、異常は発生しません.

    その後sqliteを削除したためsuperuserは消え、superuserを再作成し、django/adminページにアクセスしてブログモデルを表示すると、写真ファイルをアップロードする効果がデータベースによく反映されていることがわかります
  • new.htmlファイルに
  • を反映する
    사진 : <input type="file" name="image"> 
    追加
  • new.htmlでコミットする場合、ファイルも一緒に渡すのでenctypeに
  • を指定します.
        <form action ="{% url 'create' %}" method="post" enctype="multipart/form-data">
  • ビューのcreate関数
  • を変更
        new_blog.image=request.FILES['image']
    新blogはhtmlからimageという名前のファイルフォーマットを取得します.受け入れる
  • detail.htmlもここに表示する必要があります.
  •     <p><img src="{{ blog.image.url }}" alt=""></p>
    =>イメージの追加
  • 実際の画像を入力するのではなく、URLを取得してユーザーに渡すので、上のURL形式*
  • に転送するだけです.
  • でもイメージがないときは細部ですhtmlページでは見ることができません.
    だからPython if文法で異常を処理すればいい
  •     {% if blog.image %}
        <p><img src="{{ blog.image.url }}" alt=""></p>
        {% endif %}
    結果ウィンドウ: