因爲我們要用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>
- 其他
不同的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服務。