上节内容回顾:
1、请求周期
url> 路由 > 函数或类 > 返回字符串或者模板语言?
Form表单提交:
    提交 -> url > 函数或类中的方法
    - ....
    HttpResponse('....')
  render(request,'index.html')
  redirect('/index/')
  用户  <    <  返回字符串
  (当接受到redirect时)自动发起另外一个请求
  --> url   .....
Ajax:
  $.ajax({
url: '/index/',
data: {'k': 'v', 'list': [1,2,3,4], 'k3': JSON.stringfy({'k1': 'v'}))}, $(form对象).serilize()
type: 'POST',
dataType: 'JSON':
traditional: true,
success:function(d){
location.reload()              # 刷新
location.href = "某个地址"     # 跳转
}
})
提交 -> url -> 函数或类中的方法
    HttpResponse('{}')
    render(request, 'index.html', {'name': 'v1'})
    <h1>{{ name }}</h1> -->
    <h1>v1</h1>

XXXXXXX redirect...
用户 <<<<<  字符串

2、路由系统URL
    a. /index/                                   ->  函数或类
  b. /index/(\d+)                    ->  函数或类
  c. /index/(?P<nid>\d+)  ->  函数或类
  d. /index/(?P<nid>\d+) name='root'  ->  函数或类
reverse()
{% url 'root' 1%}
  e. /crm/    include('app01.urls')            -> 路由分发
  f. 默认值
  url(r'^index/', views.index, {'name': 'root'}),
  def index(request,name):
            print(name)
return HttpResponse('OK')

  g. 命名空间
/admin/    include('app01.urls',namespace='m1')
/crm/      include('app01.urls',namespace='m1')
app01.urls
/index/    name = 'n1'
reverser('m1:n1')

3、函数views
    def func(request):
  request.POST
  request.GET
  request.FILES
  request.getlist
  request.method
  request.path_info

  return render,HttpResponse,redirect

4、渲染
    render(request, 'index.html')
    # for
    # if
    # 索引.   keys  values items    all

5、类
    class User(models.Model):
    username = models.CharField(max_length=32)
    email = models.EmailField()

   有验证功能
    Django Admin
   无验证功能:
    User.objects.create(username='root',email='asdfasdfasdfasdf')
      User.objects.filter(id=1).update(email='666')
    class UserType(models.Model):
      name = models.CharField(max_length=32)
    class User(models.Model):
      username = models.CharField(max_length=32)
      email = models.EmailField()
      user_type = models.ForeignKey("UserType")

    user_list = User.objects.all()
    for obj user_list:
        obj.username,obj.email,obj.user_type_id,obj.user_type.name,obj.user_type.id

    user = User.objects.get(id=1)
    user.

    User.objects.all().values("username","user_type__name",)
    class UserType(models.Model):
      name = models.CharField(max_length=32)

    class User(models.Model):
      username = models.CharField(max_length=32)
      email = models.EmailField()
      user_type = models.ForeignKey("UserType")
      m = models.ManyToMany('UserGroup')

    class UserGroup(models.Model):
      name = ....

    obj = User.objects.get(id=1)
           obj.m.add(2)
    obj.m.add(2,3)
    obj.m.add(*[1,2,3])
    obj.m.remove(...)
    obj.m.clear()
    obj.m.set([1,2,3,4,5])
    # 多个组,UserGroup对象
    obj.m.all()
    obj.m.filter(name='CTO')
 
知识点:
(1)URL
    - 两个
(2)Views
   
    - 请求的其他信息
  from django.core.handlers.wsgi import WSGIRequest
  request.environ
  request.environ['HTTP_USER_AGENT']
   
  - 装饰器
FBV:
def auth(func):
def inner(reqeust,*args,**kwargs):
v = reqeust.COOKIES.get('username111')
if not v:
       return redirect('/login/')
return func(reqeust, *args,**kwargs)
return inner

CBV:
from django import views
from django.utils.decorators import method_decorator
        @method_decorator(auth,name='dispatch')
class Order(views.View):
            # @method_decorator(auth)
    # def dispatch(self, request, *args, **kwargs):
    #     return super(Order,self).dispatch(request, *args, **kwargs)
            # @method_decorator(auth)
    def get(self,reqeust):
  v = reqeust.COOKIES.get('username111')
  return render(reqeust,'index.html',{'current_user': v})

    def post(self,reqeust):
  v = reqeust.COOKIES.get('username111')
  return render(reqeust,'index.html',{'current_user': v})
 
(3)Templates
  - 母版...html
  extends
  include
  - 自定义函数
  simple_tag
  a. app下创建templatetags目录
  b. 任意xxoo.py文件
  c. 创建template对象 register
  d.
      @register.simple_tag
      def func(a1,a2,a3....)
      return "asdfasd"
  e. settings中注册APP
  f. 顶部 {% load xxoo %}
  g. {% 函数名 arg1 arg2 %}
  缺点:
    不能作为if条件
  优点:
    参数任意
  filter
  a. app下创建templatetags目录
  b. 任意xxoo.py文件
  c. 创建template对象 register
  d.
            @register.filter
       def func(a1,a2)
      return "asdfasd"
  e. settings中注册APP
  f. 顶部 {% load xxoo %}
  g. {{ 参数1|函数名:"参数二,参数三" }} {{ 参数1|函数名:数字 }}
  缺点:
    最多两个参数,不能加空格
  优点:
    能作为if条件

(4)分页(自定义的分页)
    XSS:
  {{ page_str|safe }}

  mark_safe(page_str)
 
(5)其他
    cookie
    客户端浏览器上的一个文件
    {"user": 'dachengzi'}
    session :装饰器
    Models
    - 一大波操作
    Form验证
  
  缓存
  中间件
  信号
  CSRF
  Admin/ModelForm

Python的平凡之路(21)的更多相关文章

  1. Python的平凡之路(8)

    (本文是对平凡之路(7)的补充等) 一.动态导入模块 import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importl ...

  2. Python的平凡之路(13)

    一.Python的paramiko模块介绍 Python 的paramiko模块,该模块和SSH用于连接远程服务器并执行相关操作 SSH client 用于连接远程服务器并执行基本命令 基于用户名和密 ...

  3. Python的平凡之路(9)

    一.Paramiko模块练习 1. Paramiko模块介绍 Paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接   2 .SSHclie ...

  4. Python的平凡之路(7)

    一.面向对象高级语法部分   1.静态方法.类方法.属性方法                                                                       ...

  5. Python的平凡之路(5)

    一.模块介绍 定义: 模块--用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名test.py,模块名test) 包—用来从逻辑上组织 ...

  6. Python的平凡之路(3)

     一.函数基本语法及特性 面向对象:(华山派)—类 —class 面向过程:(少林派)—过程 —df 函数式编程:逍遥派    —函数— df 一般的,在一个变化过程中,如果有两个变量x和y,并且对于 ...

  7. Python的平凡之路(20)

    (提问复习为主) 一.Django请求的生命周期      武彦涛:           路由系统 -> 视图函数(获取模板+数据=>渲染) -> 字符串返回给用户     二.路由 ...

  8. Python的平凡之路(19)

    一.Django请求生命周期   对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端                                          ...

  9. Python的平凡之路(18)

    一.JS 正则部分 test   - 判断字符串是否符合规定的正则rep = /\d+/;rep.test("asdfoiklfasdf89asdfasdf")# truerep ...

随机推荐

  1. mac下使用sencha cmd+extjs6

    笔者刚接手公司一个项目,后台是使用extjs6做前端,php做api接口,两者通过ajax交互 没办法,不管接手的项目多么的挫逼,都还是要上的,拿人钱财替人消灾嘛 首先是安装sencha cmd ,百 ...

  2. welcome-file-list设置问题之css,js文件无法加载

    web.xml里的welcome-file-list里设置默认访问页面为/html/index.html 但是在访问时,页面CSS都没加载. 正常输入网址却没问题.用/html/index.jsp也没 ...

  3. SVM原理与实践

    SVM迅速发展和完善,在解决小样本.非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中.从此迅速的发展起来,已经在许多领域(生物信息学,文本和手写识别等)都取 ...

  4. 【adb】adb基本命令总结

    adb常用基本命令如下: adb devices           列出你的devices aapt dump badging <file_path.apk>     查看包名 adb ...

  5. Sample a balance dataset from imbalance dataset and save it(从不平衡数据中抽取平衡数据,并保存)

    有时我们在实际分类数据挖掘中经常会遇到,类别样本很不均衡,直接使用这种不均衡数据会影响一些模型的分类效果,如logistic regression,SVM等,一种解决办法就是对数据进行均衡采样,这里就 ...

  6. occ 中绘制二维矩形

    在屏幕上绘制一个二级矩形 #include <Visual3d_Layer.hxx> #include <V3d_LayerMgr.hxx> #include <Visu ...

  7. Java—多线程编程

    一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存 ...

  8. Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0

    下载jar,导入到maven中cmd中输入:mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=1 ...

  9. 每个部门绩效成绩第二名 sql server 查询 ( 替代 not in )

    原题: 集团中有多个部门,部门底下有多个员工,求每个部门绩效分数排名第二的人员,数据表结构如下: DEPAR          NAME             SCORE A             ...

  10. css 伪元素分享!!!

    最近接触到的css 伪元素觉得还算不错 分享下: 1.清楚内盒浮动设置: ;} .back_list ul:after{;visibility: hidden;}/*清楚内盒浮动设置*/ 2.伪元素a ...