django2与ajax,Python-Django-Ajax进阶2

-forms组件的渲染错误信息

在模板中:{{ foo.errors.0 }}

6c78d2cbf60c678b2eb3d95780c6d545.png

0e69fa654dbcea84ce0e63d65071eeb5.png

771fb5cad78e1b2345527a203e0a8430.png

f4416ddbff231c051b86df7ed7604852.png

6fd44060be863f047c0b9f7d08d91167.png

-forms使用bootstrap样式

widget=widgets.EmailInput(attrs={'class':'form-control'}))

f6655f0189ba1c760aeb20d4b89dfab5.png

-全局和局部钩子函数

AOP:面向切面编程

-局部钩子函数(再校验name)

def clean_name(self):

# 从cleaned_data中取出字段的值

name = self.cleaned_data.get('name')

# # 校验是否以sb开头

if name.startswith('sb'):

raise ValidationError('不能以sb开头')

else:

return name

-全局钩子函数

def clean(self):

pwd=self.cleaned_data.get('pwd')

re_pwd=self.cleaned_data.get('re_pwd')

if pwd==re_pwd:

# 正确,返回self.cleaned_data

return self.cleaned_data

else:

# 校验失败,抛异常

raise ValidationError('两次密码不一致')

cookie,session,token

cookie

-cookie是存在浏览器上的键值对{'name':'lqz','password':123}

-服务器写到浏览器上的

session:

-因为cookie不安全,所有出了session

-存在于服务器上的键值对 'sfdasdfa':{'name':'lqz','password':123}

token:(待研究)

cookie的使用:

设置cookie:

-HttpResponse的对象 obj.set_cookie(key,value,超时时间)

-obj.set_signed_cookie('name','egon',salt='123')

取cookie:

-request.COOKIES.get(key)

-name=request.get_signed_cookie('name',salt='123')

删除:

HttpResponse的对象 obj.delete_cookie('is_login')

3b11ed8d455c948ac9bfbb85b30e9cfa.png

59f543b4203f4605093145d30130399d.png

session的使用:

设置

-request.session['name']=‘lqz’

-request.session['age']=‘18’

取cookie:

-request.session.get('name')

删除:

-request.session.delete() 只删数据库

-request.session.flush() 浏览器cookie和数据库

了解:其他参数(超时时间)

efd1fd6ebfc6081d370d7f1765a02087.png

7ec7189f3b95cde586389bb8a37cc855.png

cf6cba8fa764a9d98206e41b853c8607.png

auth组件

Auth模块是Django自带的用户认证模块:

我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。

Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据。

6c4f28e7a8229d5ef79c0be40b12a2b2.png

扩展默认的auth_user表

from django.contrib.auth.models import AbstractUser

class UserInfo(AbstractUser):

"""

用户信息表

"""

nid = models.AutoField(primary_key=True)

phone = models.CharField(max_length=11, null=True, unique=True)

def __str__(self):

return self.username

注意:

按上面的方式扩展了内置的auth_user表之后,一定要在settings.py中告诉Django,我现在使用我新定义的UserInfo表来做用户认证。写法如下:

# 引用Django自带的User表,继承使用时需要设置

AUTH_USER_MODEL = "app名.UserInfo"

再次注意:

一旦我们指定了新的认证系统所使用的表,我们就需要重新在数据库中创建该表,而不能继续使用原来默认的auth_user表了。

ContentTypefrom django.db import models

from django.contrib.contenttypes.models import ContentType

from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation

class Course(models.Model):

title = models.CharField(max_length=32)

# 不会在数据库中生成字段,只用于数据库操作

policy = GenericRelation('PricePolicy',object_id_field='object_id',content_type_field='contentType')

class DegreeCourse(models.Model):

title = models.CharField(max_length=32)

class PricePolicy(models.Model):

# 跟ContentType表做外键关联

contentType = models.ForeignKey(to=ContentType)

# 正数

object_id = models.PositiveIntegerField()

# 引入一个字段,不会在数据库中创建,只用来做数据库操作

content_obj = GenericForeignKey('contentType', 'object_id')

period = models.CharField(max_length=32)

price = models.FloatField()

TTL:

85608753445b6ca177dbbf39e0cc2113.png

e809af5dd239ed063132b7c1b2480416.png

4a993de4d34e7b0c12edcfd0630b9a1c.png

af68059f8a5b39270db8403ca027773a.png

python django -5 进阶

高级知识点包括: 静态文件处理 中间件 上传图片 Admin站点 分页 使用jquery完成ajax 管理静态文件 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义 ...

Python - Django - AJAX 实现 POST 请求

index.html: +

Python Django Ajax 传递列表数据

function getTableContent(node) { event.preventDefault(); var tr = node.parentNode.parentNode; var id ...

python Django Ajax基础

升级版: ajax 创建多对多以及增加示例: views中的接收

Python之路【第十七篇】:Django【进阶篇 】

Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

Python之路【第十七篇】:Django【进阶篇】

Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

Python开发【第二十二篇】:Web框架之Django【进阶】

Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...

Python之路,Day15 - Django适当进阶篇

Python之路,Day15 - Django适当进阶篇   本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣 ...

python Django之Ajax

python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...

python学习-- Django Ajax CSRF 认证

使用 jQuery 的 ajax 或者 post 之前 加入这个 js 代码:http://www.ziqiangxuetang.com/media/django/csrf.js /*======== ...

随机推荐

jsonp 实例

一直以为很复杂吧?其实很简单,简单到你不敢相信 1.前端引好jquery文件 2.前端代码: $.ajax({       url: 'http://www.xxxxxxxx.com/expand.a ...

Effective C++ -----条款07:为多态基类声明virtual析构函数

polymorphic(带多态性质的)base classes应该声明一个virtual析构函数.如果class带有任何virtual函数,它就应该拥有一个virtual析构函数. Classes的设 ...

转:关于视频H264编解码的应用实现

转:http://blog.csdn.net/scalerzhangjie/article/details/8273410 项目要用到视频编解码,最近半个月都在搞,说实话真是走了很多弯路,浪费了很多时 ...

基于AngularJS/Ionic框架开发的性能优化

AngularJS作为强大的前端MVVM框架,虽然已经做了很多的性能优化,但是我们开发过程中的不当使用还是会对性能产生巨大影响. 下面提出几点优化的方法: 1. 使用单次绑定符号{{::value}} ...

Mac 下显示隐藏文件

将下面的命令粘贴进终端,按提示操作即可(可能需要输入电脑密码) 显示:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏:d ...

linux下实现redis共享session的tomcat集群

为了实现主域名与子域名的下不同的产品间一次登录,到处访问的效果,因此采用rediss实现tomcat的集群效果.基于redis能够异步讲缓存内容固化到磁盘上,从而当服务器意外重启后,仍然能够让sess ...

10055 - Hashmat the Brave Warrior

Problem A Hashmat the brave warrior Input: standard input Output: standard output Hashmat is a brave ...

hibernate-部分字段查询方案

hibernate的延迟加载与本列记录不一样,延迟加载正常一般用于关联字段,或者大型字段使用. 本列的情况主要用于,某一张表有几十甚至上百个字段,例如财务报表等.但是在使用某些场景是却大多只是用其10 ...

.NET 实现DES加密解密处理

.NET 实现DES加密解密处理 using System; using System.Text; using System.Security.Cryptography; using System.I ...

技术文档分享_linux中生成考核用的GPT分区表结构修复

注:历史版本,后期改用python实现了 实验一: 目的:用于生成大量模拟破坏GPT分区结构案例,并生成唯一方式修复后的评判方法.故障:在一个完整的GPT分区磁盘上,丢失了GPT主分区表,或备份分区表 ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java方法的传递方式_JAVA基础--方法传参

JAVA基础--方法传参为啥拿这个当话题?在初学者阶段,许多童鞋都对方法传参比较迷茫,知其然不知其所以然。一.先说说参数传递的几个术语:值调用(call by vale):表示方法接收的是调用者传递的值。引用调用(call by reference):表示方…

java udp 协议_网络协议 - UDP 协议详解

网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解。pdai UDP概述UDP(User Datagram Protocol)即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第…

java线程卡住排查_基于 Java 线程栈 排查问题

除日志外,还有没有别的方式跟踪线上服务问题呢?或者,跟踪并排除日志里无法发现的问题?方法当然是有的,就是通过现场快照定位并发现问题。我们所说的现场,主要指这两方面:Java 线程栈。线程栈是J…

java实验二答案天津商业大学_天津商业大学信息安全实验一

天津商业大学信息安全实验一 1《信息安全技术》实 验 报 告 书实验名称: 实验一Internet应用风险专 业: 电子商务班 级: 1203班姓 名: 代常发学 号: 20124934指导老师: 丁雷信息工程学院2015 年 5 月2目 录…

java前端的日期插件_几个前端时间插件总结

几个前端时间插件总结总结一下几款时间插件,分别是- [ ] jeDate 手册http://www.jemui.com/jedate/- [ ] bootstrap-datetimepicker 下载地址- [ ] My97DatePicker 下载地址- [ ] jQuery UI 插件Datepicker下载地址并没有哪款完全超越另外一款,主要还是看…

Java插件自动保存浏览器书签_多浏览器书签同步插件EverSync

有时上网时会遇到浏览器不能正常显示的问题。(比如我的火狐浏览器无法正确显示微信公众号管理后台,在chrome上可以正常显示),所以我的电脑里安装了chrome和firefox两个浏览器。但是时间长了,会出现两个浏览器上书签不同步的问题。原来自己的解…

php oracle 中文字段,怎么解决php oracle乱码问题

php oracle乱码是由于没有正确的配置字符集信息导致的,其解决办法就是通过PLSQL运行“select * from V$NLS_PARAMETERS;”获取oracle的字符集,并重新设置正确的字符集即可。PHP Oracle 中文乱码问题通常缺省配置连接Oracle在处理中文时都会遇到乱码问题&…

用matlab数学综合实验,MATLAB与数学实验(第2版)

MATLAB与数学实验(第2版)作者:艾冬梅 李艳晴 张丽静 刘琳出版日期:2014年06月文件大小:46.48M支持设备:¥18.00在线试读适用客户端:言商书局iPad/iPhone客户端:下载 Android客户端&#xff1a…

matlab破损皮革定位,matlab-code-of-TDOAFDOa 干扰源定位代码,应该在 的求解过程中有帮助。 276万源代码下载- www.pudn.com...

文件名称: matlab-code-of-TDOAFDOa下载 收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 38 KB上传时间: 2014-05-31下载次数: 25提 供 者: qqq详细说明:干扰源定位代码,应该在干扰源定位的求解过程中有帮助。-code for tdoa and fdoa文件列表(点击判断是否您…

debian 安装php gd2,如何在Debian Linux中为PHP安装Ioncube

在Debian Linux系统中安装PHP Ioncube加载器。 Ioncube用作PHP应用程序的加密和解密实用程序,通过它我们可以保护数据安全。 它还可以限制PHP应用程序执行未授权。 它还有助于加速提供的页面。 IonCube加载器(Ioncube Loaders)用于在Web服务器上运行时解码编码文件。…

php如何输出关联数组的值,php - 如何从PHP关联数组中获取确切的输出 - SO中文参考 - www.soinside.com...

我试图在关联数组上使用foreach循环创建一个html表。这是关于数组的更多细节。$assoc_array array("0" > array("project_id" > "1","emp_id" > "123","emp_name" > "Max","project&…

linux文件属性是什么意思,Linux文件属性

Linux是一种多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux对不同用户访问同一文件的权限做了规定。我们可以使用ls -l命令来显示一个文件的信息:37944FD1-FBEF-4EDC-80BA-B5276F4242A9.png我们…

linux文件赋予755权限,Linux文件和目录的777、755、644权限解释

Linux文件和目录的权限1.文件权限在linux系统中,文件或目录的权限可以分为3种:r:4 读w:2 写x:1 执行(运行)-:对应数值0数字 4 、2 和 1表示读、写、执行权限rwx 4 2 1 7 (可读写运行)rw 4 2 6 (可读写不可运行)rx 4 1 5 (可读可运行不可写)示例…

linux下删除已经创建的数据库,MongoDB 数据库的创建和删除

MongoDB 创建数据库语法MongoDB 创建数据库的语法格式如下:useDATABASE_NAME如果数据库不存在,则创建数据库,否则切换到指定数据库。实例以下实例我们创建了数据库 runoob:>userunoobswitched to db runoob>dbrunoob>如果你想查看所…

支持1050ti显卡的linux系统,NVIDIA 的 GTX1050 Ti 与 GTX1050 显卡登场

一年来都忙着更新全系列显卡家族的 NVIDIA,先从 GTX1080 和 GTX1070 开始,到 GTX1060 和卡王 Titan X,一步一步将整条产品线升级到 Pascal 核心。今天的 GTX1050 和 GTX1050 Ti 则是补上了中低端市场的短板,让 AMD 享受了两个月优…

c语言项开发班级登入系统,c语言--班级管理系统

满意答案dgfetc5832013.12.10采纳率:47% 等级:12已帮助:14710人class student{public:char m_strName[10]; // 姓名int m_nNum; // 学号float m_dScore[4]; // 成绩};void InputScore(student* p, int nNumber){if(nNumber > 10){print…

android 高度百分比,如何在Android中进行百分比高度和宽度?

现在,可以用Guidelines定位百分比值xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"android:layout_width"match_parent"android:layout_height"match_parent&q…

android fragment 弹出对话框,Android中使用Dialogfragment显示对话框

其他注意事项:1、如何设置自己的Dialogfragment没有标题栏?可以通过两种方法来设置 ,一种是使用dialogfragment的setStyle函数,另外就是使用getDialog().getWindow().requestFeature方法,具体代码如下Overridepublic D…

Android7.0 emui主题,全新EMUI5.0基于Android7.0 天生快,一生快!

EMUI5.0是基于Android 7.0开发的全新一代操作系统。 循着神秘古老的爱琴海带来的灵感,EMUI5.0用户界面的设计极其简单干净,令人赏心悦目。 因了解用户习惯而全新改善,EMUI5.0流畅自然的表现不会随时间递减,让生活得心应手&#xf…

在微信公众号中写html代码吗,微信公众号代码编写怎么做

微信公众号编写微信代码,因为有这方面的需要,需要去进行微信公众号代码编写。以下是学习啦小编为您带来的关于微信公众号代码编写,希望对您有所帮助。微信公众号代码编写微信公众平台编辑器不能直接编写微信代码,但是可以通过第三…