zoukankan      html  css  js  c++  java
  • day55

    昨日内容回顾

    路由系统
    无名分组
    有名分组
    默认参数
    额外参数
    
    路由分发
    项目的路由urls.py里面
    app01,app02
    1 导入include
    2 app文件夹中创建每个app的urls.py文件
    3 url(r'^app01/',include('app01.urls'))
       url(r'^$',views.home), 匹配首页
    
    

    今日内容

    视图      (类?)
    
    CBV 和 FBV
    		class base views  func base views 
    		# 重写方法
    		
    CBV:
    from django.views import View
    继承类
    class LoginView(View):
                def dispatch(self,request,*args,**kwargs):
                    ret = super().dispatch(request,*args,**kwargs)
                    return ret 	#别忘了return值
                		# 重写方法,前后加些内容
                def get(self,request):
    			
                	return render(request,'login.html') 
    			
    			def post(self,request):
    				print(request.POST)
    				uname = request.POST.get('username')
    				pwd = request.POST.get('pwd')
    				if uname == 'yang' and pwd =='123':
    					return  HttpResponse('用户名或密码错误')
    
    request  请求对象 
    
    response  响应对象 
    
    
    urls.py
    	url(r'^login/',views.LoginView.as_view()),
    	1 as_view() - view()
    	2 用户请求到了 view
    	3 view里面执行了dispatch , 反射找到请求方法对应的自己视图的方法
    
    FBV装饰器
    
    def xxx(func1):
    	def inner(request,*args,**kwargs):
    		print('xx1')
    		ret = func1(request,*args,**kwargs)
    		print('xxx2')
    		return ret 
    	return inner
    
    @xxx
    def index(request):pass
    
    CBV
    
    from django.utils.decorators import method_decorator
    
    方式3 : (name = "字符串"一种)
    @method_decorator(xxx , name='get')
    class IndexView(View):
    	方式 1 :(它可以分发给其他函数)
    	@method_decorator(xxx)
    	def dispatch(...):...
    
    	方式2 :(直接给)
    	@method_decorator(xxx)
    	def get(self,request):pass
    
    request 请求对象
    request.body : 得到用户提交数据的原始数据类型 b'username= chao& password =123'
    request.GET			#<QueryDict: {}>
    request.POST		#<QueryDict: {}>
    request.method	获取请求方法  获得的方法大写的		#GET
    request.path_info	获取用户请求路径(不带参数)	#/index/
    request.get_full_path()   获取除域名之外的全路径,包括请求参数(查询参数query_params)
    									#/index/?username=chao 
    request.META  获取请求头的元信息 
    			.META.get('HTTP_USER_AGENT')) #META请求头元信息
    			.META.get('REMOTE_ADDR'))  #客户端IP地址
    
    
    HTTPResponse('ok')  自动给你加到了body 正常情况不允许的  给整个html文件就渲染成页面了
    HTTPResponse(' "<a href='http://www.baidu.com'>百度</a>"')  超链接 浏览器做的
    正常为了怕修改  代码  只是文字显示 在评论处
    
    三个方法
    HTTPResponse('xxx')
    render(request,'index.html',{'name','chao'} )  index.html {{name}}--chao
    redirect('/login/')  ---给浏览器发送了一个重定向请求,浏览器拿到你要重定向的url,然后自动发送一个ip+端口+路径/login/,的一个请求,后端在配置对应的url('^login/',views.login)
    			浏览器 发送一个请求给py服务端  服务端重定向redirect发过去  浏览器识别//和302 拼接请求发过来,然后服务端接收,发给浏览器内容
    
    万能的句点号 .
    name.xx.xxx li.0  d1.key    不能传参
    
    py locals()
    模板语言
    {{变量}} {{%逻辑%}}
    
    
    内置的过滤器
    {{变量|过滤器名称:‘过滤其需要的参数’}}
    
    
    length
    filesizeformat
    safe	:标签字符串,识别成文本,防xss共计		用户提交的数据,塞到了html页面上
    date   	 时间对象|date:'Y-m-d H-i-s'
    cut      移除某些内容
    truncatechars	字符
    truncatewords	单词间隔空格
    slice 	
    default    默认值
    lower  upper 
    
    标签
    

    源码

    谁调用是谁的类:
    	 def as_view(cls, **initkwargs):
    	 cls
    def as_view(cls, ....)
    cls = ()
    
    调用的类
    def view(request, *args, **kwargs):
     self = cls(**initkwargs)
     if hasattr(self, 'get') and not hasattr(self, 'head'):
    dispath (分发前后干事情)
    	handler = get(self.  ..)
    	
    	return handler()   =  get()  = render() 
    	
    
    return redirect('/login/')  # 重定向  写个相对路径,跳到url
    			      super(HttpResponse, self).__init__(*args, **kwargs)
    			      	
     # return render(request,'index.html')
        			
    最终返回都是 通过HttpResponse  返回一个字符串
     
    

    模板渲染

  • 相关阅读:
    Murano Weekly Meeting 2016.05.24
    Murano Weekly Meeting 2016.05.17
    Murano Weekly Meeting 2016.05.10
    python3.4 x86_64-linux-gnu-gcc Error
    初学makefile
    解决Spring JdbcTemplate调用queryForObject()方法结果集为空时报异常
    svn命令行使用
    jquery选中checkbox
    jstl core and jstl fn
    linux上的shutdown命令
  • 原文地址:https://www.cnblogs.com/Doner/p/10893583.html
Copyright © 2011-2022 走看看