2010-09-21 24 views
32

Tôi đã đập đầu vào điều này trong vài giờ qua. tôi không thể nhận {{MEDIA_URL}} để hiển thị lênDjango {{MEDIA_URL}} trống @DEPRECATED

trong settings.py

.. 
MEDIA_URL = 'http://10.10.0.106/ame/' 
.. 
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.media", 
) 
.. 

theo quan điểm của tôi, tôi có

from django.shortcuts import render_to_response, get_object_or_404 
from ame.Question.models import Question 

def latest(request): 
    Question_latest_ten = Question.objects.all().order_by('pub_date')[:10] 
    p = get_object_or_404(Question_latest_ten) 
    return render_to_response('Question/latest.html', {'latest': p}) 

sau đó tôi có một base.html và Câu hỏi/latest.html

{% extends 'base.html' %} 
<img class="hl" src="{{ MEDIA_URL }}/images/avatar.jpg" /></a> 

nhưng MEDIA_URL hiển thị trống, tôi nghĩ đây là cách giả sử để làm việc nhưng có thể Tôi sai.

Cập nhật Phiên bản mới nhất khắc phục những sự cố này.

Trả lời

22

Thêm phương tiện truyền thông xử lý mẫu bối cảnh cũng được công việc làm

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.request", 
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.media", 
    "django.core.context_processors.static", 
) 
+1

Ya này là khi nó giống như 1,2 hoặc 1,3. Phương pháp của bạn là cách chính xác ngay bây giờ. Ngoài ra, sự tách biệt giữa STATIC và MEDIA cũng không rõ ràng. – Atherion

+1

Đây phải là câu trả lời được chấp nhận.Làm việc như một nét duyên dáng ở Django 1.8. – Leistungsabfall

+0

Vâng, cảm ơn. Bị rách tóc ra cố gắng để có được một hình ảnh để hiển thị trên ajax ... –

30

Bạn cần thêm RequestContext vào số render_to_response để xử lý ngữ cảnh được xử lý.

Trong trường hợp của bạn:

from django.template.context import RequestContext 

context = {'latest': p} 
render_to_response('Question/latest.html', 
        context_instance=RequestContext(request, context)) 

Từ docs:

context_instance

Thể hiện bối cảnh để render mẫu với. Theo mặc định , mẫu sẽ được hiển thị với một trường hợp Ngữ cảnh (được điền với các giá trị từ điển). Nếu bạn cần để sử dụng bộ xử lý ngữ cảnh, hãy hiển thị mẫu bằng mẫu RequestContext thay thế.

+4

Awww cảm ơn bạn, tôi nghĩ rằng họ cần chỉ ra rằng tốt hơn cho những người bắt đầu django. MEDIA_URL khá quan trọng đối với thiết kế cũng như tính di động. – Atherion

2

Bạn cũng có thể sử dụng direct_to_template:

from django.views.generic.simple import direct_to_template 
... 
return direct_to_template(request, 'Question/latest.html', {'latest': p}) 
+0

Điều này sẽ làm tương tự như 'render_to_response ('Question/latest.html', context_instance = RequestContext (yêu cầu, ngữ cảnh))'? –

2

Ngoài câu hỏi cung cấp ở trên có thể đề nghị bạn hãy xem photologue ứng dụng. Nó có thể giúp bạn tránh các liên kết trực tiếp trong các tệp khuôn mẫu và sử dụng các đối tượng thay thế. F.ex .:

<img src="{{ artist.photo.get_face_photo_url }}" alt="{{ artist.photo.title }}"/> 
Các vấn đề liên quan