我把头发分开了。已经完成了StackOverflow上现有的一些Q& A,但它并没有帮助我解决问题。事实上,我记得在我开发的前一次迭代中的某个时间,{{MEDIA_URL}}曾经工作正常。但现在突然空白了。
以下是我的environemnt / settings的详细信息(提供相关的代码片段):
在settings.py中,我定义了以下内容
MEDIA_URL = '/media/'
MEDIA_ROOT = '/path/to/dir'
在urls.py中:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在模板文件中:
<img src={{ MEDIA_URL }}{{ employee.photo }} alt="photo" align=left valign=top/>
在views.py中:
class EmployeeView(ListView):
model = Employee
template_name = 'CompanyApp/displayEmployees.html'
context_object_name = 'EmployeeList'
在其他相关问题中,我读到人们谈论两种解决方案(它们似乎都不适合我)。更多详情如下:
建议的解决方案#1将以下内容添加到TEMPLATE_CONTEXT_PROCESSORS:
'django.core.context_processors.media'
但是当我这样做时,我的开发环境会出现以下错误:
[12/May/2014 23:37:34] "GET / HTTP/1.1" 500 59
Traceback (most recent call last):
File "/usr/lib/python2.6/wsgiref/handlers.py", line 93, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python2.6/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return self.application(environ, start_response)
File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
self.load_middleware()
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 49, in lo ad_middleware
mw_instance = mw_class()
TypeError: media() takes exactly 1 argument (0 given)
解决方案#2我看到被提议是在视图中返回RequestContext。但正如上面所见,我正在使用ListView,它会自动呈现给模板。
任何有关如何让django再次识别{{MEDIA_URL}}值的专家见解将非常感激。谢谢。
P.S。 BTW如何发布代码?它在说明中说我必须用四个空格作为前缀。但是,使用空格键为每行代码添加四个空格,一次一行,这对我来说很痛苦。有没有更简单的方法来实现这一目标?
答案 0 :(得分:1)
根据你的说法,错误与此相关:
https://groups.google.com/forum/#!topic/django-brasil/f-5WwMA2bac上下文处理器列在MIDDLEWARE_CLASSES中,而不是TEMPLATE_CONTEXT_PROCESSORS。
答案 1 :(得分:0)
尝试在视图中添加context_instance = RequestContext(request)
def something(request):
#your view goes here
render_to_response('template.html',{#your_dict_items},context_instance=RequestContext(request))