Saya mencoba mengunggah gambar melalui admin Django dan kemudian melihat gambar itu di halaman di frontend atau hanya melalui URL.
Perhatikan ini semua di mesin lokal saya.
Pengaturan saya adalah sebagai berikut:
MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'
Saya telah menetapkan parameter upload_to ke 'gambar' dan file telah diunggah dengan benar ke direktori:
'/home/dan/mysite/media/images/myimage.png'
Namun, ketika saya mencoba mengakses gambar di URL berikut:
http://127.0.0.1:8000/media/images/myimage.png
Saya mendapatkan kesalahan 404.
Apakah saya perlu menyiapkan patters URLconf khusus untuk media yang diunggah?
Setiap saran dihargai.
Terima kasih.
^
tanda sebelumnyamedia//(?P<path>.*)$
, kadang-kadang ketika kita mengakses file media di jalur url aplikasi (sepertihttp://127.0.0.1:8000/myapp/media/img/logo.png
), ini biasa tidak akan matematika.Silakan baca DOC resmi Django dengan hati-hati dan Anda akan menemukan jawaban yang paling pas.
Cara terbaik dan mudah untuk menyelesaikan ini adalah seperti di bawah ini.
sumber
if settings.DEV
cek karena dinonaktifkan secara otomatis?Untuk Django 1.9, Anda perlu menambahkan kode berikut sesuai dokumentasi:
Untuk info lebih lanjut, Anda dapat merujuk di sini: https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-files-uploaded-by-a-user-during-development
sumber
Inilah yang saya lakukan di Django 2.0. Setel MEDIA_ROOT Pertama menjadi MEDIA_URL
setting.py
Kemudian Aktifkan
media
context_processors
inTEMPLATE_CONTEXT_PROCESSORS
dengan menambahkanAnda
media context processor
diaktifkan, Sekarang setiapRequestContext
akan berisi variabelMEDIA_URL
.Sekarang Anda dapat mengakses ini di
template_name.html
sumber
Iya. Untuk pengembangan, semudah menambahkan ini ke URLconf Anda:
Namun, untuk produksi, Anda ingin melayani media menggunakan Apache, lighttpd, nginx, atau server web pilihan Anda.
sumber
(setidaknya) untuk Django 1.8:
Jika Anda menggunakan
seperti yang dijelaskan di atas, pastikan bahwa tidak ada pola url "tangkap semua", yang mengarahkan ke tampilan default, muncul sebelum itu di urlpatterns = []. Karena .append akan menempatkan skema tambahan pada bagian akhir daftar, tentu saja akan diuji jika tidak ada pola url yang cocok sebelumnya. Anda dapat menghindari itu dengan menggunakan sesuatu seperti ini di mana pola url "tangkap semua" ditambahkan di bagian paling akhir, terlepas dari pernyataan if:
sumber
Berikut adalah perubahan yang harus saya lakukan untuk mengirimkan PDF untuk publikasi Django aplikasi Django, menggunakan Django 1.10.6:
Menggunakan definisi yang sama untuk direktori media seperti Anda, di
settings.py
:Seperti yang disediakan oleh @thisisashwanipandey, dalam proyek utama
urls.py
:dan modifikasi dari jawaban yang diberikan oleh @ r-allela, di
settings.py
:sumber
Masalah lain yang mungkin Anda hadapi setelah menyiapkan semua pola URLconf Anda adalah bahwa variabel
{{ MEDIA_URL }}
tidak akan berfungsi di template Anda. Untuk memperbaikinya, di settings.py Anda , pastikan Anda menambahkandi Anda
TEMPLATE_CONTEXT_PROCESSORS
.sumber
Menambahkan jawaban Micah Carrick untuk Django 1.8:
sumber
TypeError: view must be a callable or a list/tuple in the case of include().
.Inilah yang saya lakukan untuk mencapai rendering gambar di DEBUG = Mode salah dengan Python 3.6 dengan Django 1.11
sumber
Mengikuti langkah-langkah yang disebutkan di atas untuk => 3.0 untuk mode Debug
Dan juga bagian yang menarik perhatian saya, URL statis di atas hanya berfungsi di file urls.py proyek utama saya.Saya pertama kali mencoba menambahkan ke aplikasi saya, dan bertanya-tanya mengapa saya tidak bisa melihat gambar.
Terakhir, pastikan Anda mengatur yang berikut:
sumber
Ini jika untuk Django 1.10:
sumber
Pengaturan Anda baik-baik saja. Beberapa server web perlu menentukan media dan file folder statis secara khusus. Sebagai contoh di pythonanywhere.com Anda harus pergi ke bagian 'Web' dan menambahkan url folder media dan folder statis. Sebagai contoh:
Saya tahu bahwa ini sudah terlambat, tetapi hanya untuk membantu mereka yang mengunjungi tautan ini karena masalah yang sama;)
sumber