gpt4 book ai didi

python - Django floppyforms OSMPointWidget 不显示 map

转载 作者:行者123 更新时间:2023-11-28 17:39:41 25 4
gpt4 key购买 nike

我正在尝试将类似于 geodjango-admin 中的 OSM map 放入我的主站点上的表单中。

我决定使用 floppyforms,像 documentation 中一样设置所有内容它似乎得到了认可,但奇怪的是 map 没有出现。 Firebug 显示只有一个空的 <div id="id_coord_map"></div>而不是 map ,但它具有所有正确的尺寸。调试文本框和“删除所有功能”-链接就在那里,就像它们应该的那样。但是,当我打开该站点时,Firebug 不会在“网络”选项卡中显示任何 javascript 请求,所以这可能是一个提示。

我想我漏掉了什么或者什么东西没有正确包含在内,但我试了几个小时但真的不知道了。除其他外,我设置了静态文件的所有路径并运行 manage.py collectstatic ,我也尝试不使用通用编辑 View ,但结果是一样的。

以下是代码中的相关部分:

#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>

最佳答案

我刚刚遇到了类似的问题,意识到我需要在 header 中包含一个 {{ form.media }} 标签,然后 django-floppyforms 提供相关的 javascript 文件来使 map 神奇地出现。

在 base.html 的 head 的某处包含一个用于额外 javascript 的 block

{% block extra_js %}{% endblock %}

然后填写你的location_form.html中的 block

{% block extra_js %}
{{ form.media }}
{% endblock %}

关于python - Django floppyforms OSMPointWidget 不显示 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26238976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com