在Django配置文件中,設置郵箱的配置信息
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' #SMTP地址 例如: smtp.163.com
EMAIL_PORT = 587 #SMTP端口 例如: 25
EMAIL_HOST_USER = '851497301@qq.com' #qq的郵箱 例如: xxxxxx@163.com
EMAIL_HOST_PASSWORD = 'jkhkxegkqdsrbaig' #我的郵箱密碼 例如 xxxxxxxxx
EMAIL_SUBJECT_PREFIX = u'django' #為郵件Subject-line前綴,默認是'[django]'
EMAIL_USE_TLS = True #與SMTP服務器通信時,是否啟動TLS鏈接(安全鏈接)。默認是false
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
使用Django提供的模塊發送郵件,在django.core.mail模塊提供了send_mail來發送郵件。
send_mail(subject, message, from_email, recipient_list,html_message=None)
subject 郵件標題
message 普通郵件正文, 普通字符串
from_email 發件人
recipient_list 收件人列表
html_message 多媒體郵件正文,可以是html字符串
例如:
msg='<a target="_blank">點擊激活</a>'
send_mail('注冊激活','',settings.EMAIL_FROM, ['itcast88@163.com'], html_message=msg)
使用緩存
省市區的數據是經常被用戶查詢使用的,而且數據基本不變化,所以我們可以將省市區數據進行緩存處理,減少數據庫的查詢次數。在Django REST framework中使用緩存,可以通過drf-extensions
擴展來實現。
關于擴展使用緩存的文檔,可參考鏈接http://chibisov.github.io/drf-extensions/docs/#caching
安裝
pip install drf-extensions
使用方法
1) 直接添加裝飾器
可以在使用rest_framework_extensions.cache.decorators中的cache_response裝飾器來裝飾返回數據的類視圖的對象方法,如
class CityView(views.APIView):
@cache_response()
def get(self, request, *args, **kwargs):
...
cache_response裝飾器可以接收兩個參數
@cache_response(timeout=60*60, cache='default')
- timeout 緩存時間
- cache 緩存使用的Django緩存后端(即CACHES配置中的鍵名稱)
如果在使用cache_response裝飾器時未指明timeout或者cache參數,則會使用配置文件中的默認配置,可以通過如下方法指明:
# DRF擴展
REST_FRAMEWORK_EXTENSIONS = {
# 緩存時間
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 60,
# 緩存存儲
'DEFAULT_USE_CACHE': 'default',
}
- DEFAULT_CACHE_RESPONSE_TIMEOUT 緩存有效期,單位秒
- DEFAULT_USE_CACHE 緩存的存儲方式,與配置文件中的
CACHES
的鍵對應。
注意,cache_response裝飾器既可以裝飾在類視圖中的get方法上,也可以裝飾在REST framework擴展類提供的list或retrieve方法上。使用cache_response裝飾器無需使用method_decorator進行轉換。
2)使用drf-extensions提供的擴展類
drf-extensions擴展對于緩存提供了三個擴展類:
-
ListCacheResponseMixin
用于緩存返回列表數據的視圖,與ListModelMixin擴展類配合使用,實際是為list方法添加了cache_response裝飾器 -
RetrieveCacheResponseMixin
用于緩存返回單一數據的視圖,與RetrieveModelMixin擴展類配合使用,實際是為retrieve方法添加了cache_response裝飾器 -
CacheResponseMixin
為視圖集同時補充List和Retrieve兩種緩存,與ListModelMixin和RetrieveModelMixin一起配合使用。
三個擴展類都是在rest_framework_extensions.cache.mixins
中。
為省市區視圖添加緩存
因為省市區視圖使用了視圖集,并且視圖集中有提供ListModelMixin和RetrieveModelMixin的擴展(由ReadOnlyModelViewSet提供),所以可以直接添加CacheResponseMixin擴展類。
修改返回省市區信息的視圖
from rest_framework_extensions.cache.mixins import CacheResponseMixin
class AreasViewSet(CacheResponseMixin, ReadOnlyModelViewSet):