Django的静态文件相关问题

时间:2015-08-07 05:16:14

标签: python django

我不知道为什么在Django的管理页面中更改了静态文件的URL。 我的模型类如下

class MW_test(models.Model):
    name = models.CharField(max_length=10)
    tst = models.CharField(max_length=5, null=True, blank=True)
    data = models.CharField(max_length=10, null=True, blank=True)
    img = models.FileField(upload_to='static/test_images')
    def __str__(self):
        return self.name

如上所示,静态文件保存在static/test_images中。 但是,当我从Django Administration页面点击静态文件链接时(见下面的屏幕截图)我找不到404.(见下面的截图) 原因是请求的网址不是我上传的网址。我不知道为什么Django管理中的url链接发生了变化。实际上,当我手动输入网址时,我可以获取静态文件。

Django Administration Page enter image description here

2 个答案:

答案 0 :(得分:0)

对于本地测试和使用,需要进行以下更新:

urls.py:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

并在设置文件中添加如下内容:

# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_ROOT_DIR = 'static-tmp'
STATIC_ROOT = normpath(join(BASE_DIR, STATIC_ROOT_DIR))
STATIC_URL = '/static/'

STATIC_DIR_BASE_PATH = join(BASE_DIR, "static")

STATICFILES_DIRS = (
    STATIC_DIR_BASE_PATH,
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

答案 1 :(得分:0)

STATIC_URL需要是绝对路径:即它必须以斜线开头。您可能已将其设置为static/:它必须为/static/