Django的基本使用(八)

一、富文本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 开启调试模式 ---- 开发的时候使用
  1. 如果修改了python代码,会自动的重启服务器,方便开发
    注意: 如果修改了静态资源,模板html 服务器可能不会重启,开发时候最好重启下

  2. 如果程序异常了,可以看到错误信息,方便调试

2.False 关闭调试模式 — 上线的时候使用
  1. 上线的时候关闭一些该开发者看的东西
  2. 部属到服务器上线的时候需要关闭

五、分页功能demo

1.设计模型准备数据
2.展示数据
3.展示分页导航

看bootstrap, 直接复制模板

扫描二维码关注公众号,回复: 3319061 查看本文章
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缓存框架的特点:
  1. 尽可能少的代码
  2. 尽可能的快
  3. 一致性
    不同的数据存储方式,提供一致的接口(api)来访问
  4. 扩展性
    可以接入外部的存储方式
3.可以使用的缓存方式:
  1. 可以使用Memcached作为缓存 — 内存,分布式 ,老—新redis(默认不支持)
  2. 可以使用数据库进行缓存 ---- 数据量大,效率低
  3. 可以使用文件缓存 — 使用不方便,效率低
  4. 使用本地内存进行缓存
  5. 可以接入其他存储方式 — 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。

猜你喜欢

转载自blog.csdn.net/lixinghua666/article/details/82825481