GeoDjango在mod的模板表单上显示地图

2024-05-19 19:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个基于Django(GeoDjango)和OpenStreetMap的示例网站。到目前为止,我有一个简单的场景:

你知道吗型号.py你知道吗

class Parks(models.Model):
park_name_en = models.CharField(max_length=256)    
description = models.TextField()
picture = models.ImageField()
geom = PolygonField()

@property
def picture_url(self):
    return self.picture.url

def __unicode__(self):
    return self.title

你知道吗视图.py你知道吗

def park_insert(request):
form = ParkForm()
return render(request, 'addpark.html', {'form': form})

你知道吗表单.py你知道吗

class ParkForm(forms.ModelForm):
class Meta:
    model = Parks
    fields = ('park_name_en', 'description', 'picture',)
    geom = forms.PolygonField()

最后但并非最不重要的是模板添加公园.html你知道吗

    <html>
<head>
    {{ form.media }}
</head>

<body>
    <div id="map">
        <form enctype="multipart/form-data" method="post" action="">
            {% csrf_token %}
                {{ form.as_p }}
            <input type="submit" value="Submit"/>
        </form>
    </div>
</body></html>

当我打开模板页面时,除了PolygonField()以文本形式出现外,所有字段都会出现。如何在用户窗体上显示地图(我在管理面板中得到了它,但是我想创建一个窗体来插入新的公园)


Tags: namepyselfformparkreturnmodelsdef
1条回答
网友
1楼 · 发布于 2024-05-19 19:18:19

你需要描述“形式”型号.py. 你知道吗

你知道吗型号.py你知道吗

从django.contrib.gis公司导入表单

class Parks(models.Model):
park_name_en = models.CharField(max_length=256)    
description = models.TextField()
picture = models.ImageField()
geom = models.PointField(widget= forms.OSMWidget(attrs={'map_width': 800, 'map_height': 500}) )

@property
def picture_url(self):
    return self.picture.url

def __unicode__(self):
    return self.title

你知道吗视图.py你知道吗

def park_insert(request):
form = ParkForm()
return render(request, 'addpark.html', {'form': form})

你知道吗表单.py你知道吗

class ParkForm(forms.ModelForm):
class Meta:
    model = Parks
    fields = ('park_name_en', 'description', 'picture',)
    geom = forms.PolygonField()

试试看。看这个 https://docs.djangoproject.com/en/2.2/ref/contrib/gis/forms-api/#widget-classes

相关问题 更多 >