我正在构建一个与GIS相关的Web应用程序,它在地图上显示数据库内容的方式非常简单:视图收集了几个(当前是122个)GeoJSON文件并将它们传递给模板。模板迭代所有这些并显示它们(使用Leaflet)。但是,我无法使其工作,因为每次尝试都会导致内存错误。
我使用的数据库是PostgreSQL数据库,以防万一。我也在模型中使用TextField,是否有可能成为问题的根源?
非常感谢任何建议:)
观点:
geodata = GeojsonData.objects.filter(connection = my_con).iterator()
view = "map"
return render(request, "map.html", {'geojsonData': geodata})
模板:
{% for dat in geojsonData %}
{% with dat.name as name %}
{% with dat.geodata as gj %}
{{gj}}
L.geoJSON(name).addTo(map);
{% endwith %}
{% endwith %}
{% endfor %}
模特:
class GeojsonData(models.Model):
name = models.CharField(max_length=2000, unique=True)
connection= models.ForeignKey(Connection, related_name='Connection', default=1)
geodata = models.TextField()
追溯:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/map/1/
Django Version: 1.11.4
Python Version: 3.6.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp.apps.myappConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)
File "C:\Users\Xabi\Desktop\...\views.py" in mapa
92. return render(request, "map.html", {'geojsonData': geodata})
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\shortcuts.py" in render
31. return HttpResponse(content, content_type, status)
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\http\response.py" in __init__
303. self.content = content
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\http\response.py" in content
336. content = self.make_bytes(value)
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\http\response.py" in make_bytes
247. return bytes(value.encode(self.charset))
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\functional.py" in _curried
15. return _curried_func(*(args + moreargs), **dict(kwargs, **morekwargs))
File "C:\Users\Xabi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\safestring.py" in _proxy_method
107. return SafeBytes(data)
Exception Type: MemoryError at /map/1/
Exception Value:
答案 0 :(得分:0)
不确定您是否已经解决了问题。但也许不是在模板中进行循环,而是可以在python中进行循环并将最终结果传递给模板?