Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
通过用户自主添加应用后,需要实现各个应用的具体功能。在前一小节中,完成了天气应用的接口封装,在本小节中会采用 Django 的缓存机制,缩短小程序端的请求时间。
代码语言:javascript复制from django.core.cache import cache
用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面。这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了。
缓存就是为了防止重复计算,把那些消耗了大量资源的结果保存起来,下次访问时就不用再次计算了。
一、设置缓存
在 settings 中的 CACHES 中设置缓存,下面是几个可用的缓存选项:
① Memcached
Django目前原生支持的最快最有效的缓存系统。要使用Memcached,需要下载Memcached支持库,一般是python-memcached或者pylibmc。
然后设置BACKEND为django.core.cache.backends.memcached.MemcachedCache(使用python-memcached时)。
代码语言:javascript复制CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
② DB Cache
Django可以把缓存数据存储在数据库中。
代码语言:javascript复制CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
③ Filesystem Cache
使用文件来存储缓存数据。
代码语言:javascript复制CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
④ Local-memory Cache
Django默认使用的缓存系统,数据存储在本地内存中
代码语言:javascript复制CACHES = {
'default': {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
"LOCATION": "backend-cache",
}
}
二、星座运势接口
通过 聚合API 的外部请求,将要查询的星座名称传入,即可得到相关信息
代码语言:javascript复制key = "638590d043a54639f3560b5381f5c4f0"
api = "http://web.juhe.cn:8080/constellation/getAll"
代码语言:javascript复制def constellation(cons_name):
key = "638590d043a54639f3560b5381f5c4f0"
api = "http://web.juhe.cn:8080/constellation/getAll"
types = ("today", "tomorrow", "week", "month", "year")
params = "consName=%s&type=%s&key=%s" % (cons_name, types[0], key)
url = api "?" params
print("星座运势" url)
response = requests.get(url=url)
data = json.loads(response.text)
print(data)
return {
"name": cons_name,
"text": data
}
代码语言:javascript复制if __name__ == "__main__":
data = constellation("金牛座")
三、星座运势接口封装
四、路由
代码语言:javascript复制from django.urls import path
from .views import service
urlpatterns = [
path("constellation", service.constellation),
]