
Django2.0
狙如
这个作者很懒,什么都没留下…
展开
-
Django2.0-cookie和session
笔记在知了课堂-Django开发的基础上更改cookie和sessioncookie和session使用:web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:存储在服务端:通过cookie存储一个sessionid,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个se...原创 2018-11-15 16:46:30 · 814 阅读 · 0 评论 -
Django2.0 memcached介绍和使用
笔记在知了课堂-Django开发的基础上更改memcached什么是memcachedmemcached之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJournal访问速度而开发的,后来被很多大型项目采用。官网是www.danga.com或者是memcached.org。Memcached是一个高性能的分布式的内存对象缓存系统,全世界有不少公...原创 2018-11-15 14:39:15 · 483 阅读 · 0 评论 -
Django2.0-表单(4)-文件上传
笔记在知了课堂-Django开发的基础上更改文件上传前端实现在前端中,需要填入一个form标签,然后在这个form标签中指定enctype="multipart/form-data",不然就不能上传文件。在form标签中添加一个input标签,然后指定input标签的name,以及type="file"。以上两步的示例代码如下:<!DOCTYPE html>&原创 2018-11-15 14:29:02 · 436 阅读 · 6 评论 -
Django2.0-表单(3)-ModelForm
笔记在知了课堂-Django开发的基础上更改ModelForm表单中的Field和模型中的Field基本上是一模一样的,而且表单中需要验证的数据,也就是模型中需要保存的。那么这时候可以将模型中的字段和表单中的字段进行绑定。比如现在有个User的模型。from django.db import modelsclass User(models.Model): username = ...原创 2018-11-15 14:24:47 · 391 阅读 · 0 评论 -
Django2.0-表单(2)-表单的FIeld,验证器,提取错误字段
笔记在知了课堂-Django开发的基础上更改用表单验证数据常用的Field使用Field可以是对数据验证的第一步。你期望这个提交上来的数据是什么类型,那么就使用什么类型的Field。可以通过表单类实例.cleaned_data.get("field_name")获得值CharField用来接收文本。参数:max_length:这个字段值的最大长度。min_length:这个字段...原创 2018-11-15 14:22:12 · 858 阅读 · 0 评论 -
Django2.0-表单(1)-Form使用
笔记在知了课堂-Django开发的基础上更改Django中的表单Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事:渲染表单模板。(不常用,容易前后端耦合)表单验证数据是否合法。Django中表单使用流程在一个app中新建一个forms.py,定义一个表单类,继承自django.forms.Form。Field字段名称在html中对应的...原创 2018-11-15 14:16:15 · 792 阅读 · 0 评论 -
Django2.0-views(7)-类视图,paginator,page
类视图在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。Viewdjango.views.generic.View是主要的类视图。所有的类视图都是继承于他。如果写自己的类视图,也可以继承于他。然后再根据当前请求的method,来实现不同的方法。比如这个视图只能使用get的方式来请求,那么就可以在这个类中定义get(sel...原创 2018-11-12 00:27:16 · 423 阅读 · 0 评论 -
Django2.0-views(6)-csv文件
笔记在知了课堂-Django开发的基础上更改生成CSV文件有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来。、生成小的CSV文件用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去。import csvfrom django.http import HttpResponsedef csv...原创 2018-11-11 21:58:44 · 649 阅读 · 0 评论 -
Django2.0-views(5)-JsonResponse
JsonResponse用来对象dumps成json字符串,然后返回将json字符串封装成Response对象返回给浏览器。并且他的Content-Type是application/json。from django.http import JsonResponsedef index(request): return JsonResponse({"username":"zhiliao"...原创 2018-11-11 21:54:59 · 571 阅读 · 0 评论 -
Django2.0-views(4)-HttpResponse对象
笔记在知了课堂-Django开发的基础上更改HttpResponse对象Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpResponse则是HttpResponseBase用得...原创 2018-11-11 21:53:43 · 329 阅读 · 0 评论 -
Django2.0-views(3)-WSGIRequest对象和QueryDict对象
笔记在知了课堂-Django开发的基础上更改WSGIRequest对象Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数。也就是我们经常看到的request参数。该类继承于HttpRequst在这个对象上我们可以找到客户端上传上来的所有信息。这个对象的完整路径是django.core.hand...原创 2018-11-11 21:50:48 · 285 阅读 · 0 评论 -
Django2.0-views(8)-添加分页
添加分页使用 bootstrap3BootCDN免费CDN加速服务<!-- 最新版本的 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha...原创 2018-11-12 16:45:32 · 164 阅读 · 0 评论 -
Django2.0-验证和授权(1)-User模型基本用法
授权系统Django有一个内置的授权系统。包括:用户。权限。分组。一个可以配置的密码哈希系统。一个可插拔的后台管理系统。默认中创建完一个django项目后,其实就已经集成了授权系统。在INSTALLED_APPS中django.contrib.auth:包含了一个核心授权框架,以及大部分的模型定义。django.contrib.contenttypes:Content ...原创 2018-11-18 17:21:08 · 295 阅读 · 0 评论 -
Django2.0-验证和授权(2)-User模型拓展
扩展用户模型代理模型Django内置的User模型虽然已经足够强大了。但是有时候还是不能满足的需求。比如在验证用户登录的时候,默认使用的是用户名作为验证,但一般通过手机号码或者邮箱来进行验证。或者需要增加一些新的字段。那么这时候就需要扩展用户模型了。如果只是需要在默认的基础之上增加一些操作的方法。则使用代理模型的方法# models.pyfrom django.db import mo...原创 2018-11-18 17:37:23 · 679 阅读 · 0 评论 -
django登陆/注册跳转回原来的页面
模版中在模版中将登陆/注册的跳转链接后添加查询字符串,将当前页面的路径一起发送过去 <a href="{% url 'user_login' %}?from={{ request.get_full_path }}">对应的视图函数中将获得的查询字符串拼接到根url路径就可以了def user_login(request): if request.method == ...原创 2019-01-07 16:28:33 · 1788 阅读 · 0 评论 -
Django 添加ckeditor
步骤安装ckeditor pip install django-ckeditor安装app# settings.pyINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions'...原创 2019-01-05 21:32:32 · 574 阅读 · 0 评论 -
Django项目(2)-自定义User模型
需要自定义User模型的原因需要前后台共同同一个账号。字段需要自己定义,以及验证也需要自己设置from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManagerfrom django.db import modelsfrom shortuuidfield import...原创 2018-12-03 20:53:02 · 462 阅读 · 0 评论 -
Django项目(1)-配置
Django预先配置工作:都在setting.py中设置配置好数据库。DATABASES = {'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "v1", "HOST": "127.0.0.1", 'USER': "root", "原创 2018-12-03 18:55:43 · 168 阅读 · 0 评论 -
Django2.0-redis
笔记在知了课堂-Django开发基础上修改redis教程概述redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关参考文档:http://redisdoc.c...原创 2018-11-19 14:46:41 · 739 阅读 · 0 评论 -
Django2.0-中间件
笔记知了课堂-Django开发基础上修改中间件中间件是在request和response处理过程中的一个插件。比如在request到达视图函数之前,我们可以使用中间件来做一些相关的事情,比如可以判断当前这个用户有没有登录,如果登录了,就绑定一个front_user对象到request上。也可以在response到达浏览器之前,做一些相关的处理,比如想要统一在response上设置一些cooki...原创 2018-11-16 15:04:23 · 289 阅读 · 0 评论 -
Django2.0-上下文处理器
模板笔记借鉴了知了课堂-Django开发上下文处理器上下文处理器是可以返回一些数据,在全局模板中都可以使用。比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象。在settings.TEMPLATES.OPTIONS.context_processors中,有许多内置的上下文处理器。django.template.con...原创 2018-11-16 15:02:58 · 600 阅读 · 0 评论 -
Django2.0-views(10)-错误处理
错误处理在一些网站开发中。经常会需要捕获一些错误,然后将这些错误返回比较优美的界面,或者是将这个错误的请求做一些日志保存。那么我们本节就来讲讲如何实现。常用的错误码404:服务器没有指定的url。403:没有权限访问相关的数据。405:请求的method错误。400:bad request,请求的参数错误。500:服务器内部错误,一般是代码出bug了。502:一般部署的时候见得比...原创 2018-11-12 16:48:25 · 282 阅读 · 0 评论 -
Django2.0-views(9)-类视图添加装饰器
给类视图添加装饰器给类添加装饰器,那么可以通过以下两种方式来实现:装饰dispatch方法from django.utils.decorators import method_decorator # 给类的方法使用的装饰器def login_required(func): # 装饰器 def wrapper(request,*args,**kwargs): i...原创 2018-11-12 16:47:12 · 412 阅读 · 0 评论 -
Django2.0-验证和授权(4)-Group 分组
分组权限有很多,一个模型就有最少三个权限,如果一些用户拥有相同的权限,那么每次都要重复添加。这时候分组就可以帮解决这种问题了,可以把一些权限归类,然后添加到某个分组中,之后再把需要赋予这些权限的用户添加到这个分组中,就比较好管理了。分组使用的是django.contrib.auth.models.Group模型, 每个用户组拥有id和name两个字段该模型在数据库被映射为aut...原创 2018-11-18 17:51:50 · 449 阅读 · 0 评论 -
Django2.0-验证和授权(4)-权限
权限Django中内置了权限的功能。都是针对表(模型级别)的。比如对某个模型上的数据是否可以进行增删改查操作。不能针对数据级别的,比如对某个表中的某条数据能否进行增删改查操作(如果要实现数据级别的,考虑使用django-guardian)。创建完一个模型后,针对这个模型默认就有三种权限,分别是增/删/改。在执行完migrate命令后,查看数据库中的auth_permission表中的...原创 2018-11-18 17:49:15 · 785 阅读 · 0 评论 -
Django2.0-验证和授权(3)-User登陆,注销,登陆限制
登录、注销和登录限制登录在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用django.contrib.auth.login进行登录。这里使用的models是继承自AbstractBaseUser的模型# models.pyfrom django.contrib.auth.models import AbstractBas...原创 2018-11-18 17:43:08 · 509 阅读 · 0 评论 -
Django2.0-views(2)-重定向
重定向重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。永久性重定向:http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入www.jingdong.com的时候,会被重定向到www.jd.co...原创 2018-11-11 21:48:43 · 716 阅读 · 0 评论 -
Django2.0-views(1)-限制请求装饰器
常用的请求methodGET请求: 一般用来向服务器索取数据,但是不会向服务器提交数据,不会对服务器的状态进行更改。POST请求:一般是用来向 服务器提交数据,会对服务器的状态进行更改。限制请求装饰器Django内置的视图装饰器可以给视图提供一些限制。比如限制某个视图只能通过GET的method访问等。以下是一些常用的内置视图装饰器。django.views.decorators...原创 2018-11-11 21:47:09 · 800 阅读 · 0 评论 -
Django2.0-templates(7)-templates加载静态文件
加载静态文件在DTL中,使用static标签加载静态文件。 在模板中使用{% load static %}来加载static标签步骤确保django.contrib.staticfiles已经添加进settings.py中的INSTALLED_APP默认开启确保在setting.py中设置了STATIC_URL在已经安装的app下新建文件夹static(强制名),再在st...原创 2018-11-04 19:15:29 · 474 阅读 · 0 评论 -
Django2.0-templates(6)-模版结构优化-引入模版、继承模版
模板笔记借鉴了知了课堂-Django开发模版结构优化引入模版有些代码是重复的,可以单独抽取出来,哪里需要用到,就使用{% include "html模板" %}(模板查找路径也是跟setting.py中的DIRS有关)实例定义两个html文件,分别作为可重复的页面头和页面尾的内容&lt;!-- header.html --&gt;&lt;h1&gt; &lt;br原创 2018-11-04 19:13:32 · 603 阅读 · 0 评论 -
Django2.0-templates(5)-自定义过滤器
模板笔记借鉴了知了课堂-Django开发自定义过滤器步骤自定义的模板过滤器必须放在app中,并且这个app必须要在INSTALLED_APPS中进行安装。在这个app下面创建一个python包叫做templatetags。这个名字是绝对的在这个包下创建一个python文件如果app的名字为book,项目结构为:- book - views.py - urls....原创 2018-11-04 19:08:03 · 577 阅读 · 2 评论 -
Django2.0-templates(4)-模版过滤器
模板笔记借鉴了知了课堂-Django开发模板常用过滤器有时候需要对模板中的一些数据进行处理。一般是通过函数的形式来完成,而在DTL中,不支持函数的调用形式(),因此不能给函数传递参数。可以通过过滤器来实现,过滤器本身实现就是函数。过滤器使用的是|传参可以只有一个参数(左边):和arg之间不能有空格{# 常用的add过滤器 #}{{ value|add:arg }} {# 等同于...原创 2018-11-04 19:04:20 · 429 阅读 · 0 评论 -
Django2.0-templates(3)-模版标签
模板笔记借鉴了知了课堂-Django开发常用的模板标签if标签。需要{% %}包裹。可以使用==, !=, &lt;, &lt;=, &gt;, &gt;=, in, not in, is, is not等判断运算符变量名直接写,不用{{}}包裹,包裹的是要输出的for...in...标签。可以遍历列表,元组,字符串,字典等添加reversed可以翻转顺序在DTL中,执行...原创 2018-11-04 18:53:55 · 250 阅读 · 0 评论 -
Django2.0-templates(2)-模版变量
模板笔记借鉴了知了课堂-Django开发模版变量render(request, templates.html, context=dict_variable)使用的时候需要给context赋值一个dict变量假设该dict变量是d,它的键是kk,kk对应的值是vv将这个kk放到模板中,格式是{{ kk }},render执行的时候就会将kk替换成vv如果想要访问对象的属性,...原创 2018-11-04 18:46:15 · 412 阅读 · 0 评论 -
Django2.0-templates(1)-渲染模版方式和模版查找路径
模板笔记借鉴了知了课堂-Django开发templatesDjango自带的是DTL(Django Templates language)DTL模版是一种带有特殊语法的HTML文件。该文件可以被Django编译可以传递参数进去实现数据动态化编译完成后,生成一个普通的HTML文件渲染模版方式render_to_string()找到模版,然后将模版编译后渲染成Py...原创 2018-11-04 18:42:14 · 1574 阅读 · 2 评论 -
创建第一个django2.0项目
创建第一个Django2.0项目首先要进入虚拟环境,该虚拟环境已经下载好Django2.0wokon virtualenv_name命令行创建:django-admin startproject django_project_name运行:切换到创建好的项目下,进入子文件夹,此时dir可以看到manage.py这个文件(forDjango2) E:\Djang...原创 2018-11-02 13:20:49 · 441 阅读 · 0 评论 -
Django2.0-urls(5)-include(),re_path(),reverse()
includeinclude()函数有三种方式形式:include(module, namespace=None)module:子URL的模块字符串namespace:实例命名空间。继续注意需要向指定应用命名空间,就是在子urls.py中添加app_name变量include ((pattern_list, app_namesapce), namespace=None)...原创 2018-11-03 13:50:52 · 405 阅读 · 0 评论 -
Django2.0-urls(4)-模块化和命名空间
url模块化如果所有的URL都放在主urls.py,则不好管理可以让每个app管理自己对应的URL在app包下新建一个文件(比如urls.py)来存储这些URL的映射操作在主urls.py中导入include函数,用include函数包含子urls.py,参数是应用名.子urls文件名#主urls.pyfrom django.urls import path, i...原创 2018-11-03 13:46:36 · 786 阅读 · 1 评论 -
Django2.0-urls(3)-参数转换器
urls参数转换器用于限制参数from django.urls import converters查看converters默认的参数转换器DEFAULT_CONVERTERS = { 'int': IntConverter(), 'path': PathConverter(), 'slug': SlugConverter(), 'str': St...原创 2018-11-03 13:38:04 · 281 阅读 · 0 评论 -
Django2.0-urls(2)-参数
urls参数嵌套参数捕获某个参数的一部分例如/index/3,需要捕获3#urls.pypath('app/<index>', v.url_index),#views.pydef url_index(request, index): return HttpResponse("返回的参数名是index,它的值是: {}".format(index))...原创 2018-11-03 13:32:37 · 917 阅读 · 0 评论