Stories

Thiết lập đường dẫn khi upload files trong dự án Django

Thiết lập đường dẫn media upload files cho Django

bichkhe A few hours ago · 5 min. read
Share this

Django framework

Giả sử chúng ta có dùng câu lệnh sau để tạo

django create-project videos_system

Chúng ta có

└── videos_system
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-310.pyc
    │   ├── settings.cpython-310.pyc
    │   ├── urls.cpython-310.pyc
    │   └── wsgi.cpython-310.pyc
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Trong file settings.py thêm dòng này vào cuối


import os
SETTINGS_PATH = os.path.dirname(os.path.dirname(__file__))
print('SETTINGS_PATH:', SETTINGS_PATH)
TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'templates'),
)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/
SITE_ROOT = SETTINGS_PATH
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'
STATICFILES_DIRS = (
    os.path.join(SITE_ROOT, 'media'),
)
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = 'media/'


Trong files urls.py trông giống như sau

from django.contrib import admin
from django.urls import path
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from . import settings

urlpatterns = [
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()

Sử dụng

Giả sử trong models như sau

from django.db import models
class Video(models.Model):
    video = models.FileField(
        upload_to="videos"
    )

Thì thư mục videos nghĩa là /media/videos Thư mục media cùng cấp với thư mục videos_system và files manage.py

Become a member
Get the latest news right in your inbox. We never spam!
Read next