geodjango-admin にあるものと同様の OSM マップをメイン サイトのフォームに入れようとしています。
フロッピーフォームを使用することにし、ドキュメントのようにすべてを設定すると、認識されるように見えますが、奇妙なことにマップが表示されません。Firebug は<div id="id_coord_map"></div>
、マップの代わりに空しかないことを示していますが、すべて正しい次元を持っています。デバッグテキストボックスと「すべての機能を削除」リンクは、本来あるべき姿です。しかし、サイトを開くと、Firebug は「ネットワーク」タブに JavaScript リクエストを表示しないので、それがヒントかもしれません。
何かを見逃したか、何かが正しく含まれていないと思いますが、何時間も試してみましたが、もうわかりません。とりわけ、静的ファイルと run のすべてのパスを設定しmanage.py collectstatic
、一般的な編集ビューを使用しないようにしましたが、結果は同じでした。
コード内の関連部分は次のとおりです。
#views.py
import floppyforms as forms
...
class OSMPointWidget(forms.gis.PointWidget, forms.gis.BaseOsmWidget):
pass
class LocationCreateView(CreateView):
model = Location
fields = ['name', 'zip', 'coord']
form_class = modelform_factory(Location,
widgets={"coord": forms.gis.PointWidget(attrs = {
'display_wkt': True,
'map_srid': 4326,
'map_width': 700,
'map_height': 500,})})
#models.py
class Location(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=255, blank=True, default='', unique=True)
coord = models.PointField()
zip = models.CharField(max_length=5, default='12345')
objects = models.GeoManager()
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
super(Location, self).save(*args, **kwargs)
#urls.py
urlpatterns = patterns('',
...
url(r"location/$", views.LocationCreateView.as_view(),
name = "locationcreate"),
...
)
#location_form.html
{% extends "_layouts/base.html" %}
{% block page_title %}Enter Location | {% endblock %}
{% block page_content %}
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock %}
#base.html
<!doctype html>
<html>
<head>
<title>{% block page_title %}{% endblock %}Calendar</title>
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.css">
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap-theme.css" >
</head>
<body>
<div class="container theme-showcase" role="main">
<div class="jumbotron">
<h1>EVENTCALENDAR</h1>
</div>
<div class="container">
{% block page_content %}{% endblock %}
</div>
</div>
</body>
</html>