0%

微信小程序——实现图文开发

微信小程序——实现图文开发


图文消息的开发逻辑


文本消息和图文消息对比


Django的图片消息开发


我们建立了一个文件夹,叫做 resources ,然后里面有一个 images 文件夹。

里面存放图片,其名字是图片的 md5 。

首先设置路由,即存放 images 的路径。

在 project 的 settings.py 中,加上

RESOURCES_DIR = os.path.join(BASE_DIR, 'resources')
IMAGES_DIR = os.path.join(RESOURCES_DIR, 'images')

然后,我们在 apis 应用中的 views 文件夹内,创建了 image.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import os
from django.http import Http404, HttpResponse, FileResponse
from backend import settings


def image(request):
if request.method == 'GET':
md5 = request.GET.get('md5')
imgfile = os.path.join(settings.IMAGES_DIR, md5 + '.jpg')
# 这个 settings 是我们在之前定义的
print(imgfile)
if os.path.exists(imgfile):
data = open(imgfile, 'rb').read()
# return HttpResponse(data, content_type='image/jpg')
return FileResponse(open(imgfile, 'rb'), content_type='image/jpg')
# 为了说明内容是图片,所以增加了 content_type
# 上面两个都可以
else:
return Http404()
elif request.method == 'POST':
pass

我们继续添加 apis 应用下的 urls.py 的路由

1
2
3
4
5
6
7
8
9
10
from django.urls import path

from .views import weather, menu, image

urlpatterns = [
# path('', weather.helloworld)
path('weather', weather.weather),
path('menu', menu.get_menu),
path('image', image.image)
]

然后我们通过浏览器访问

http://127.0.0.1:8000/api/v1.0/service/image?md5=1ad78e3e075fd648882ba5299728369b

我们就能看到图片了。


拿到图片信息


我们在 apis 的 image.py 再次添加一个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def image_text(request):
if request.method == 'GET':
md5 = request.GET.get('md5')
imgfile = os.path.join(settings.IMAGES_DIR, md5 + '.jpg')
print(imgfile)
if not os.path.exists(imgfile):
return utils.response.wrap_json_response(
code=utils.response.ReturnCode.RESOURCES_NOT_EXISTS
)
else:
response_data = {}
response_data['name'] = md5 + '.jpg'
response_data['url'] = '/service/image?md5=%s' % (md5)
response = utils.response.wrap_json_response(data = response_data)
return JsonResponse(data=response,safe=False)

这样我们访问

http://127.0.0.1:8000/api/v1.0/service/imagetext?md5=1ad78e3e075fd648882ba5299728369b

的时候,得到

当客户端拿到这个数据的时候,就会找到图片的url,然后请求就好了。

请我喝杯咖啡吧~