因为我们要用django做geoserver+openlayer的后端,所以只看get和post怎么实现就行了。
一、结构
工程结构如下图:
在新建工程的基础上,新建了一个gismap/geoserver.py;在templates中新建了两个页面get.html和post.html。
二、程序
1. geoserver.py
一共三个方法,一个是get请求,一个是post请求,一个是渲染get页面。
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render
# 接收get请求数据
def get(request):
request.encoding = 'utf-8'
if 'q' in request.GET and request.GET['q']:
message = '你搜索的内容为: ' + request.GET['q']
else:
message = '你提交了空表单'
return HttpResponse(message)
# 接收POST请求数据
def posthtml(request):
ctx ={}
if request.POST:
ctx['rlt'] = request.POST['q']
return render(request, "post.html", ctx)
# 渲染表单
def gethtml(request):
return render(request, 'get.html')
2.urls.py
用来定义url跳转的方法。
from django.conf.urls import url
from . import geoserver
urlpatterns = [
url(r'^get$', geoserver.get),
url(r'^gethtml$', geoserver.gethtml),
url(r'^posthtml$', geoserver.posthtml),
]
3.get.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>django get页面</title>
</head>
<body>
<form action="/get" method="get">
<input type="text" name="q">
<input type="submit" value="搜索">
</form>
</body>
</html>
4.post.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>django post页面</title>
</head>
<body>
<form action="/posthtml" method="post">
{% csrf_token %}
<input type="text" name="q">
<input type="submit" value="提交">
</form>
<p>{{ rlt }}</p>
</body>
</html>
5.其他
不同的django版本创建的web模板会略有不同。
Python3.7+django3.0.6,已经配好了templates的路径,不需要修改了。
如果配置信息有需要修改的,在settings.py中修改。
三、效果
效果很简单。
运行:python manage.py runserver 0.0.0.0:5000
首先访问127.0.0.1:5000/gethtml
在文本框中随便写点什么,点击搜索。
跳转至:127.0.0.1:5000/get?q=test
访问:127.0.0.1:5000/posthtml
随便写点什么,提交之后,就会在文本框下面显示。
这是最简单的get和post。
接下来,我们要看看怎么转发geoserver的WMS服务。