文档来自:https://www.cnblogs.com/LiCheng-/p/6920900.html
-
流程
- 基本配置
- 路由系统
- 视图view
- 模板
- Model
- 中间件
- Form
- 认证系统
- CSRF
- 分页
- Cookie
- Seesion
- 缓存
- 序列化
- 信号
- admin
一共四个部分:模型,视图,模板,控制器
Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:
M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。
python manage.py startapp appname (新建 app)
python manage.py makemigrations (显示并记录所有数据的改动)
python manage.py migrate (将改动更新到数据库)
python manage.py createsuperuser (创建超级管理员)
b、静态文件添加 在template中
# 首先在项目根目录下创建static目录
# 接着在settings.py 文件下添加
STATIC_URL = '/static/' # 默认已添加,使用静态文件时的前缀
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'), #行末的逗号不能漏
)
# 这样在template中就可以导入static目录下的静态文件啦
# 例:
<script src="/static/jquery-1.12.4.js"></script>
settings配置
2. 命名组(Named groups)
在上面的简单例子中,并没有使用正则表达式分组,在更高级的用法中,很有可能使用正则分组来匹配URL并且将分组值通过参数传递给view函数。
在Python的正则表达式中,分组的语法是 (?P<name>pattern)
, name表示分组名,pattern表示一些匹配正则.
四、 Django Views(视图函数)
http请求中产生两个核心对象:
http请求:HttpRequest对象
http响应:HttpResponse对象
2. HttpResponse对象
对于HttpRequest对象来说,是由django自动创建的,但是,HttpResponse对象就必须我们自己创建。每个view请求处理方法必须返回一个HttpResponse对象。
在HttpResponse对象上扩展的常用方法:
- 页面渲染:render(推荐),render_to_response,
- 页面跳转:redirect
- locals: 可以直接将对应视图函数中所有的变量传给模板
2. 模板语言
模板中也有自己的语言,该语言可以实现数据展示
- {{ item }}
- {% for item in item_list %} <a>{{ item }}</a> {% endfor %}
forloop.counter
forloop.first
forloop.last - {% if ordered_warranty %} {% else %} {% endif %}
- 母板:{% block title %}{% endblock %}
子板:{% extends "base.html" %}
{% block title %}{% endblock %} - 帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}}
{{ bio|truncatewords:"30" }}
{{ my_list|first|upper }}
{{ name|lower }}
小知识点:在模板语言中字典数据类型的取值是通过dict.xxx而不是dict[xxx]
关系对象映射(Object Relational Mapping,简称ORM)。
jango 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件,
在上一节中讲到,什么是框架,什么Django框架 但是忘记保存了,但还是那句话,当你记住它的时候,你会发现生活中都充满它的影子
models
ok 模型类。models, 数据库的基础,写一些字段,关联表的东西,这个类继承与models和Model
它有一个Meta类和一个unicode方法 修改默认生成表名,输出字段
还有汉化表名,字段名 verbose_name_plural verbose_name
当创建好了models类 接下就是映射数据库表
makemigrations post 上面说明 生成迁移文件
migrate 执行迁移文件将改动的数据映射到数据库中
好像没了 有再补充吧 这是模型类
admin
后台站点,管理数据库的,我是管理数据库的,但是你要给我数据库我才能管理。而我要做的就是把数据库表单给你
十七、admin
django amdin是django提供的一个后台管理页面,改管理页面提供完善的html和css,使得你在通过Model创建完数据库表之后,就可以对数据进行增删改查,而使用django admin 则需要以下步骤:
- 创建后台管理员
- 配置url
- 注册和配置django admin后台管理页面
注:不建议新手经常使用admin,会形成依赖,核心的是model模块的操作!
1、创建后台管理员
python manage.py createsuperuser |
2、配置后台管理url(默认已配)
url(r '^admin/' , include(admin.site.urls)) |
3、注册和配置django admin 后台管理页面
admin.site.register(models.UserType)
还有一些小的细节,就是弄成中文的形式,models和admin字段,表单名是链接的。唯一要改的是再setting中
修改它的中文形式
admin先这样吧,等有问题的查找扩展
富文本编辑器
https://www.cnblogs.com/ianduin/p/7732983.html
接下来学的是富文本编辑器,CHEDITOR_UPLOAD_PATH的作用是设定你通过ckeditor所上传的文件的存放目录。
内容上编辑的东西,因为涉及到文件的上传所有会有更多的配置
修改模型类content的字段为富文本相关的
就是一个小插件吧
Django之分页功能
https://www.cnblogs.com/kongzhagen/p/6640975.html
Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py
.它可以接收列表、元组或其它可迭代的对象。
这个链接里边举了几个例子,需要的时候可以去研究一下
过滤器
https://www.cnblogs.com/zknublx/p/5965036.html
在应用包下创建全局上下文
很尴尬我忘了有什么作用了
https://www.cnblogs.com/qiaoqianshitou/articles/9620439.html
模板要在上下文中渲染。
上下文是django.template.Context的实例。django.template.RequestContext是Django提供的一个子类。
django.template.RequestContext默认为模板上下文添加很多变量。使用render()快捷方式时,如果没有明确传入其他上下文,默认使用RequesetContext。
缓存原理
https://www.cnblogs.com/zuoshoushizi/p/7850281.html
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回。
Django中提供了6种缓存方式:
- 开发调试
- 内存
- 文件
- 数据库
- Memcache缓存(python-memcached模块)
- Memcache缓存(pylibmc模块)
首先介绍一下我使用的Django全文检索逻辑了,在网上查看了各种资料发现,Django上一般用到的检索引擎基本上就是whoosh,sphinx,xapian了。后面的sphinx,xapian大家都可以在百度百科上找到相应的词条,基本都是使用了很大的项目使用的,毕竟是基于C写的,效率上肯定不必多言了,但是我这个杀鸡的活还用不到这两把牛刀了,这次我使用的是第一个whoosh引擎了,为什么使用这个呢?
因为whoosh是一个纯python实现的全文搜索组件。
主要特性
- 敏捷的API(Pythonic API)。
- 纯python实现,无二进制包。程序不会莫名其妙的崩溃。
- 按字段进行索引。
- 索引和搜索都非常的快 -- 是目前最快的纯python全文搜索引擎。
- 良好的构架,评分模块/分词模块/存储模块等各个模块都是可插拔的。
- 功能强大的查询语言(通过pyparsing实现功能)。
- 纯python实现的拼写检查(目前唯一的纯python拼写检查实现)
pip install whoosh pip install jieba pip install django-haystack
关于pythonanywhere,网上说的很少呀
找不到什么资料