2009-11-18 1 views
3

내가 좋아하는 뭔가가 다음 DB에장고 FileField와의 URL을 상대하지

MEDIA_ROOT = '/home/httpd/foo/media/' 
MEDIA_URL = 'http://www.example.org/media/' 

(...)

file = models.FileField(upload_to='test') 

나는 관리자 페이지에서 해당 필드에 객체를 생성 장고 저장을 전체 파일 경로 : "/home/httpd/foo/media/test/myfile.pdf". 이것은 docs에서 말하는 것과 반대입니다. 당신의 데이터베이스에 저장됩니다

모든 파일 (MEDIA_ROOT을 기준으로)에 대한 경로입니다. 내가 템플릿에 file.url를 사용하는 경우

내가 좋아하는 뭔가를 얻을 :

대신 내가 좋아하는 것이 무엇의

http://www.example.org/home/httpd/foo/media/test/myfile.pdf

:

http://www.example.org/media/test/myfile.pdf

내가 뭘 잘못하고 있니?

+0

사용자 지정이없는 기본 관리자 만 사용하고 있습니까? 에서처럼, 필드가 저장되는 방식을 방해하는 코드는 작성하지 않았습니까? – sheats

+0

예, 방금 필드가 있습니다 –

+0

(관리자가 다른 모델 회원과 무관 한 M2M 사용자 정의가 있음) –

답변

3

필자는 내 프로젝트 중 하나에서 FileField 샘플을 만들었으며 예상 한대로 작동하는 것처럼 보였습니다. 다음은 시도 할 몇 가지 사항입니다.

다음과 같이 설정해보십시오. 나는 그들이 MEDIA_URL을 /와 함께 끝내지 않는 것이 나쁘다는 것을 알고 있습니다. 그러나 이것이 제가하는 일이며, 나는 그것을 더 좋아합니다. 당신은 당신이 슬래시로를 따라 템플릿에 MEDIA_URL을 사용할 때마다 기억해야한다 : 그 아무것도 도움이되지 않는 경우 HREF = "{{MEDIA_URL}}/경로 /로는/파일"

MEDIA_ROOT = '/home/httpd/foo/media' 
MEDIA_URL = '/media' 

작성 FileField가 사용자 정의되지 않은 새로운 단순화 된 모델이며 여전히 동일한 문제가 발생하는지 확인하십시오.

+0

맞습니다. 귀하가 말한대로 작동했습니다. 무슨 일이 일어 났는지는 웹 서버가 여전히 오래된 파이썬 파일을 사용하고 있었다는 의심이 든다. 최근 프로덕션 서버로 전환하여 구성 파일을 '만지'는 것을 잊어 버리는 경우가 있습니다. –

+4

Django 1.9부터 media_url을 슬래시로 끝내는 것은 불가능합니다 : ImproperlyConfigured "설정하면 MEDIA_URL은 슬래시로 끝나야합니다" –