ajax的运用

  • 锁:共享锁、排他锁

    • lock in share mode 共享锁开启方式 (都要先开启事物,begin)
    • for update 排他锁开启 (先 begin)
    • 表锁举例:lock table app01_publish write
      • unlock tables;
    • create、update、delete、操作时,MySQL自动加行级互斥锁
    锁
    1.原生中
    select * from t1 where id=1 for update;(写这句前得先开启事物,begin)
    2.orm中
    models.T1.objects.select_for_update().filter(id=1)
    
    
  • 事物四大特性:原子性、永久性、隔离性、一致性。

    原生SQL中开启事物的两种方式:
    1.start transaction;
    2.beigin;
    提交事物
    commit;
    回滚
    roll_back
    
    orm中开启事物的三种方式
    1.
    DATABASES = {
    	'ENGINE':'django.db.backends.mysql',
    	'NAME':'day58',
    	'HOST':'127.0.0.1',
    	'PORT':3306,
    	'USER':'root',
    	'PASSWORd':'root',
    
    	'ATOMIC_REQUESTS':TRUE,  # 全局开启事物,绑定的是http请求响应整个过程
    	
    }
    2.
    from django.db import transaction
    
    @transaction.atomic
    def viewfunc(request):
    	do_stuff()
    
    取消事物
    @transaction.non_atomic_requests
    def my_view(request):
    	do_stuff()
    
    3.上下文
    from django.db import transaction
    
    def viewfunc(request):
    	do_stuff()
    	with transaction.atomic():
    		do_more_stuff()
    	do_other_stuff()
    	
    	
    
  • Ajax(jQuery中的):两个特性

    • 异步请求
    • 局部刷新
    $('#button').click(function(){
    	$.ajax({
    		url:'/login/', # 请求路径
    		type:'post',  # 请求方式
        data:{       # 请求携带数据
          	uname:$('#username'.val()),
            pwd:$('#password'.val()),
          	csrfmiddlewaretoken:$('[name=csrfmiddlewaretoken]')
      			#csrfmiddlewaretoken:"{{csrf_token}}"
          },
            success:function(res){
                console.log(res)
            },
            error:function(jqXHR,textStatus,err){
             		console.log(arguments) 
            }
    	})
    })
    
    爬虫中的请求:
    ret = requests.post('/login/',data={}) print(ret.content)
    
  • 外部文件导入的方式来写js代码,那么JS代码汇总不能用Django的模板语法,因为HTML文件的加载顺序:URL—视图----HTML模板渲染——return给浏览器—浏览器渲染——script的SRC—才去请求js文件----那么JS文件代码此时才去加载到你的HTML里面。

原文地址:https://www.cnblogs.com/he-qing-qing/p/11264800.html