zoukankan      html  css  js  c++  java
  • 2019.03.28 博客反省

     文档来自:https://www.cnblogs.com/LiCheng-/p/6920900.html

    1. 流程

    2. 基本配置
    3. 路由系统
    4. 视图view
    5. 模板
    6. Model
    7. 中间件
    8. Form
    9. 认证系统
    10. CSRF
    11. 分页
    12. Cookie
    13. Seesion
    14. 缓存
    15. 序列化
    16. 信号
    17. 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

    记下来,省得每次google
     
    过滤器,变量的显示形式的改变

    在应用包下创建全局上下文

      很尴尬我忘了有什么作用了

    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,网上说的很少呀
    找不到什么资料


  • 相关阅读:
    JQuery
    a:hover伪类在ios移动端浏览器内无效的解决方法
    git rebase 过程中遇到冲突该怎么解决?
    git
    vue单文件中scoped样式如何穿透?
    微信小程序-怎么获取当前页面的url
    es6 class 中 constructor 方法 和 super
    如何将svg图标快速转换成字体图标?
    JavaWeb三大组件之一Filter知识总结
    Session的引入以及Cookie的不足
  • 原文地址:https://www.cnblogs.com/Py-king/p/10618136.html
Copyright © 2011-2022 走看看