所以第一次使用django并遇到这个问题,媒体网址不想加载/工作到目前为止我的urls.py设置如此
if settings.DEBUG:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),)
我的settings.py就像这样
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = 'http:/localhost:8000/admin-media/'
我的html模板如此
<link rel="stylesheet" href="/media/css/template.css" type="text/css" />
<link rel="stylesheet" href="/media/css/nivo-slider.css" type="text/css" />
<script type="text/javascript" src="/media/js/jquery-1.4.3.min.js"></script>
<script type="text/javascript" src="/media/js/jquery.nivo.slider.pack.js"></script>
每当我输入http://localhost:8000/media/css/template.css时,我都会
AttributeError at /media/css/template.css/
'str' object has no attribute 'resolve'
并在我的django服务器中记录以下内容
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 283, in run
self.result = application(self.environ, self.start_response)
File "C:\Python27\lib\site-packages\django\core\handlers\wsgi.py", line 272, in __call__
response = self.get_response(request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 169, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 218, in handle_uncaught_exception
return callback(request, **param_dict)
File "C:\Python27\lib\site-packages\django\utils\decorators.py", line 93, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\views\defaults.py", line 30, in server_error
t = loader.get_template(template_name) # You need to create a 500.html template.
File "C:\Python27\lib\site-packages\django\template\loader.py", line 157, in get_template
template, origin = find_template(template_name)
File "C:\Python27\lib\site-packages\django\template\loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: 500.html
当我输入http://localhost:8000/home/我的页面加载但没有加载我的css或javascript时..
答案 0 :(得分:1)
如果你是第一次使用Django,你应该使用1.4。如果您使用的是较小版本,请在继续前进之前进行升级。在旧版本的框架上开始一个新项目会让你迟到。
所以,鉴于Django 1.4。您需要以下内容(仅限以下内容):
PROJECT_ROOT = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'assets'),
)
PROJECT_ROOT
只是一个节省重复的便利变量;它与Django没有任何关系。您可以在“assets”目录中放置所有项目范围的静态资源。您可以为喜欢的任何名称命名,它不能与MEDIA_ROOT
或STATIC_ROOT
相同。
另请注意:MEDIA_ROOT
现在仅适用于上传,即通过模型上的FileField
和ImageField
添加的文件。 STATIC_ROOT
仅用于collectstatic
管理命令的输出,您只能在生产中使用;你从来没有真正存储过任何东西。
如果您在开发中使用runserver
,Django将自动为您提供所有静态资源。 只有在开发中使用其他网络服务器时,才需要将以下内容添加到urls.py :
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# ... the rest of your URLconf goes here ...
urlpatterns += staticfiles_urlpatterns()
最后,为了在开发中为您的MEDIA_ROOT
目录提供服务,请将以下内容添加到urls.py:
from django.conf import settings
# ... the rest of your URLconf goes here ...
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
在制作中,MEDIA_ROOT
和STATIC_ROOT
都将由您的网络服务器直接提供,而不是Django。
请参阅:https://docs.djangoproject.com/en/dev/howto/static-files/
答案 1 :(得分:0)
http://redsymbol.net/articles/django-attributeerror-str-object-no-attribute-resolve/
假设您正在使用其开发网络处理Django项目 服务器,当您尝试加载页面时,您会收到此异常 浏览器:
AttributeError: 'str' object has no attribute 'resolve'
这是因为 你忘了输入“模式”这个词。
具体来说,在某些url.py中,您输入了类似的内容:
urlpatterns = ('', (r'^$', direct_to_template, {'template':'a.html'}), # ... when you should have typed this: urlpatterns = patterns('', (r'^$', direct_to_template, {'template':'a.html'}), # ... See the difference?
在第一个中,我是 错误地将urlpatterns指定为元组。在第二,我 正确使用django.conf.urls.defaults.patterns函数。
答案 2 :(得分:0)
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': 'media','show_indexes': True}),
)