如果这是重复,我道歉。我一直在网上搜索并尝试了多种解决方案。我已经构建了一个图像上传器,将图像上传到正确的位置但是,我想我的urls.py中有一些东西让我无法显示图像。
评论的线条是我的尝试,但我没有运气。 urls.py:
from django.conf.urls import url
from . import views
from django.conf import settings
from django.conf.urls.static import static
app_name = 'orders'
urlpatterns = [
url(r'^$',views.index,name='index'),
url(r'^invoice/$', views.invoice, name='invoice'),
url(r'^photo/$', views.UploadView.as_view()),
#static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT),
#static(r'^media/', document_root=settings.MEDIA_ROOT),
#url("^media/(?P<path>.*)$","django.views.static.serve",{"document_root": settings.MEDIA_ROOT}),
url(r'^catalog/$', views.catalog, name='catalog'),
url(r'^postStampsShipments/$', views.postStampsShipments, name='postStampsShipments'),
url(r'^catalog/(?P<SKU>[^/]+)/$', views.catalogDetail, name='catalogDetail'),
url(r'^catalogchange/(?P<SKU>[^/]+)/$', views.catalogChange, name='catalogChange'),
url(r'^updateOSTKCat/$', views.updateCatalogOSTK, name='OSTKCat'),
url(r'^items/$', views.item, name='items'),
url(r'^items/(?P<SKU>[^/]+)/$', views.itemDetail, name='itemDetail'),
url(r'^inventory/$', views.inventory, name='inventory'),
url(r'^inventoryChange/$', views.inventoryChange, name = 'inventoryChange'),
url(r'^test/$', views.test, name='test'),
url(r'^genBarcode/$', views.genBarcode, name='genBarcode'),
url(r'^barcode/$', views.barcode, name='barcode'),
url(r'^(?P<retailOrderNumber>[^/]+)/', views.orderDetail,name = 'Detail'),
url(r'^(?P<retailOrderNumber>[^/]+)/shipments/', views.shipments, name='shipments'),]
查看:
def itemDetail(request,SKU):
edit = request.GET.get('edit','')
itm = Item.objects.filter(SKU=SKU)[0]
vendors = Vendor.objects.all()
cat = Category.objects.all()
template = loader.get_template('orders/itemDetail.html')
context = {
'itemDetail':itm,'SKU':SKU,'edit':edit,'vendors':vendors,'cat':cat
}
return HttpResponse(template.render(context, request))
settings.py:
MEDIA_URL = 'media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
模板中的代码:
<td>{% load static %}
{{ img.image.url }}
<img src="{{ img.image.url }}">
</td>
我看到的常见错误:
Unhandled exception in thread started by <function wrapper at 0x0366AAB0>
Traceback (most recent call last):
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\core\management\commands\runserver.py", line 121, in inner_run
self.check(display_num_errors=True)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\core\management\base.py", line 374, in check
include_deployment_checks=include_deployment_checks,
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\core\management\base.py", line 361, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config
return check_resolver(resolver)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver
for pattern in resolver.url_patterns:
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\urls\resolvers.py", line 313, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\urls\resolvers.py", line 306, in urlconf_module
return import_module(self.urlconf_name)
File "C:\Program Files (x86)\Anaconda2\lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "C:\MintJules\WebApp\MintJules\MintJules\urls.py", line 25, in <module>
url(r'^orders/',include('orders.urls')),
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\conf\urls\__init__.py", line 50, in include
urlconf_module = import_module(urlconf_module)
File "C:\Program Files (x86)\Anaconda2\lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "C:\MintJules\WebApp\MintJules\orders\urls.py", line 25, in <module>
url(r'^media/(.*)$', 'django.views.static.serve', {'document_root':os.path.join(os.path.dirname(__file__), 'static')}),
File "C:\Program Files (x86)\Anaconda2\lib\site-packages\django\conf\urls\__init__.py", line 85, in url
raise TypeError('view must be a callable or a list/tuple in the case of include().')
TypeError: view must be a callable or a list/tuple in the case of include().
答案 0 :(得分:0)
仔细查看错误堆栈跟踪:
url(r'^media/(.*)$', 'django.views.static.serve',{'document_root':os.path.join(os.path.dirname(__file__), 'static')})
TypeError
:对于include()
,视图必须是可调用或列表/元组。
Django 1.10不再允许您在网址格式中将视图指定为字符串(例如'django.views.static.serve'
)。
解决方案是更新您的urls.py
以包含可调用的视图。这意味着您必须导入urls.py
中的视图:
from django.views.static import serve
urlpatterns = [
url(r'^media/(.*)$', serve, {'document_root':os.path.join(os.path.dirname(__file__), 'static')}),
# ...
]
这也在the Django docs中说明。