一、富文本rtf
1.富文本介绍
即文字可以带一些丰富的格式
2.在线富文本编辑器
论坛博客编辑的时候使用
3.django中的使用
1.安装django中的插件
pip install django-tinymce
2.(1)在setting中配置
TINYMCE_DEFAULT_CONFIG = {
'theme':'advanced',
'width':800,
'height':600,
}
(2)添加到INSTALLED_APPS中
"tinymce"
二、在视图函数中使用富文本
1.在模板中添加
在head中添加script
<script src='/static/tiny_mce/tiny_mce.js'></script>
<script>
tinyMCE.init({
'mode':'textareas', 'theme':'advanced',
'width':800,'height':600,
})
</script>
2.添加文本域
<form method='post' action='url'>
<textarea></textarea>
</form>
三、404界面
—404找不到网页异常 — 路径写错了
1.如果用户遇到404通常做友好提示,或者 直接跳到首页
2.定制404页面
1.在项目的templates目录下定义404.html (注意名字不是随意定义)
2.在404.html可以任意定制内容
3.404要设置DEBUG = False
后才可以使用,即非开发模式
*如果请求该服务器地址输入错误,就会自动的跳到404界面
四、调试模式
DEBUG = boolean值
表示是否开启调试模式
1.True 开启调试模式 ---- 开发的时候使用
-
如果修改了python代码,会自动的重启服务器,方便开发
注意: 如果修改了静态资源,模板html 服务器可能不会重启,开发时候最好重启下 -
如果程序异常了,可以看到错误信息,方便调试
2.False 关闭调试模式 — 上线的时候使用
- 上线的时候关闭一些该开发者看的东西
- 部属到服务器上线的时候需要关闭
五、分页功能demo
1.设计模型准备数据
2.展示数据
3.展示分页导航
看bootstrap, 直接复制模板
4.分页功能
1.将数据集合分成多页数据
paginator = Paginator(数据集合,每页数据的数量)
2.获得指定页数据
currPage = paginator.page(页码)
数据集合 = currPage.object_list
3.传给服务器
5.页码处理
1.有多少页展示多少页
{% for i in page_range %}
<li><a href="{% url 'day08:getStudentsPage' i %}">{{ i }}</a></li>
{% endfor %}
2.设置跳转的url 完成跳转功能
href="{% url 'day08:getStudentsPage' i %}">{{ i }}</a></li>
3.选中效果
{% ifequal i currentPageNumber %}
<li class="active"><a href="{% url 'day08:getStudentsPage' i %}">{{ i }}</a></li>
{% else %}
<li><a href="{% url 'day08:getStudentsPage' i %}">{{ i }}</a></li>
4.上一页
if currPage.has_previous 有上一页
设置上一页url <a href="{% url 'day08:getStudentsPage' currPage.previous_page_number %}"
else 没有上一页
不需要设置url
5.下一页
if currPage.has_nexts 有下一页
设置下一页url <a href="{% url 'day08:getStudentsPage' currPage.next_page_number %}"
else 没有下一页
不需要设置url
六、django中的缓存框架
——提高web的访问效率
1.官网查看资料 — https://docs.djangoproject.com/en/2.1/topics/cache/
2.django缓存框架的特点:
- 尽可能少的代码
- 尽可能的快
- 一致性
不同的数据存储方式,提供一致的接口(api)来访问 - 扩展性
可以接入外部的存储方式
3.可以使用的缓存方式:
- 可以使用Memcached作为缓存 — 内存,分布式 ,老—新redis(默认不支持)
- 可以使用数据库进行缓存 ---- 数据量大,效率低
- 可以使用文件缓存 — 使用不方便,效率低
- 使用本地内存进行缓存
- 可以接入其他存储方式 — redis 内存,效率高
4.数据库缓存的使用:
1.在setting中配置缓存数据库:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
LOCATION用来指定缓存数据库表的名字
2.执行 python manager.py createcachetable
会自动的数据库创建缓存表
3.使用:
直接在需要缓存的视图函数上加上装饰器即可:
如:
@cache_page(60)
def testCache(request):
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据
多个url指向同一视图函数.
每个视图缓存(如每个站点缓存)都是从URL键入的。 如果多个URL指向同一视图,则每个URL将单独缓存。 继续该my_view示例,如果您的URLconf看起来像这样:
urlpatterns = [
path('foo/<int:code>/', my_view),
]
5.自定义缓存
# 存,取
# 自定义缓存
def testCache(request):
# 判断缓存中是否有数据
# 从缓存中取数据,获取到缓存内容
cacheTest = cache.get("testcachehtml")
if cacheTest: # 有数据--直接响应
return HttpResponse(cacheTest)
else: # 没有数据,--加载并存到缓存中区
time.sleep(8)
tem = loader.get_template("testCache.html")
strHtml = tem.render()
# 保存到缓存中去
cache.set("testcachehtml",strHtml,60)
return HttpResponse(strHtml)
6.cache 缓存操作
1.导包
from django.core.cache import cache
2.操作
存: cache.set(key,value,缓存时间)
取: cache.get(key)
add 添加
get_or_set 如果有对应的值表示获取,没有就设置
get_many 获取多个
set_many 设置多个值
delete 删除
delete_many 删除多个
clear 清除
touch 设置有效时间
7.使用redis数据库作为缓存数据库 --快
1.资料: http://django-redis-chs.readthedocs.io/zh_CN/latest/#django
2.使用:
(1)安装对应的模块
pip install django-redis
(2)在setting中配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
(3)使用redis缓存
与上面数据库缓存一样的用法
直接在需要缓存的视图函数上加上装饰器即可:
如:
@cache_page(60)
def testCache(request):
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据
(4)注意:使用redis存储,需要启动redis服务,否则会报数据连接错误
启动redis
(5)测试
select 1 切换库
keys * 查看所有
get key 获取某个值
8.缓存数据库的配置
常用配置
TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。
OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。