• day56


    金融公司的要求准备
    交易员:985 211 研究生
    it 人员: 本科
    基金:基金从业证 只要想去考基金
    

    聚宽 米筐 优矿 tushare 如果想玩 (可以写接口的逻辑,供用户使用)

    量化:拿自己的策略,去拿以前的数据测量,自动化	如果可以,则可以使用的
    
    金融:
    	分析师 数据师  也得写代码  有文档  所以学python的很多(tensorflow)很多的计算库非常成熟
    
    接口
    返回数据的函数: 数据接口
    返回功能的函数:功能接口 
    url 返回数据 url称为接口
    

    day56

    1 今日内容

    2 内置标签{%%}

    .是路径

    print(request.POST)  每次刷新的键值对  csrftoken (针对的是post)
    	 防御跨站请求伪造
    <QueryDict: {'csrfmiddlewaretoken': ['uESGhCIOdMK53m3Qun1qkfpahakjX9DzN8fGAA1vIdgIBoHkekmUgaPOPm3xZN6E']}>
    
    
    <form action="" method="post">
        {% csrf_token %}    # 任意位置检测到了
                            {# 登陆login 返回给用户 发送post请求,通过你携带我的请求(键值对密钥)访问的   在页面上加这个可以通过认证  #}
                                    {# 爬虫的话  携带自己的请求不对  forbidden了  (没有爬虫爬不了的网站)#}
                            {#   防御的是别人登陆的网页请求,而不是自己提交的写好的csrf标签。没有键值对 登陆不上 csrf在html里面不是py里面,通过其他数据来了,forbidden  #}
                            {#        只有通过自己的登陆页面html  来提交数据,才可以登陆(因为提交的时候有csrf键值对)#}  {# 随机字符串每次都刷新  #}
                                    {#Django 的csrf可以识别自己的服务端发过来的键值对  别人的网站用户没法伪装    #}
        <input type="text">
        <input type="submit">提交
    </form>
    
      全局的认证  'django.middleware.csrf.CsrfViewMiddleware',  .是路径   会把别的认证也会阻隔
      
    放行csrf  认证
      @csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置csrfToken全局中间件。
    
      @csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。
    
    
    代码重用
    Django 提供了功能,只要你写一个公用模板,后面的差不多的继承一下
    
    组件和插件
    组件: 都封装了里面js css 计算和逻辑分析 
    插件: 一个特定的功能		时间计算,任何都能用
    划分不明显
    
    for 循环
    for 循环里没有break 
    
      {% for foo in l1 %}
                {{ forloop.parentloop.counter }}
                                           {#在内层循环的外层循环的计数 #}
                <a href="">{{ foo }}</a>
      {% endfor %}
    
    从零开始数序号
      {#     <li>{{ forloop.counter0 }}{{ key }}  ----   {{ value }}</li>#}
    倒着数 
    {#     <li>{{ forloop.revcounter }}{{ key }}  ----   {{ value }}</li>#}第一条为true,不让用默认下拉框时的判断
      <li>{{ forloop.first }}{{ forloop.revcounter }}{{ key }}  ----   {{ value }}</li>
    
    相当于else  empty 
       {% empty %}
            <h1>
                对不起,你没有搜索到数据!
            </h1>
       {% endfor %}
    变量过长
    {% with total=business.employee.count %}
     {{ total }}
     {% endwith %}
     
     
    <ol>
        {% for key,value in name_dict.items %}
    	<li>{{ forloop.first }}{{ forloop.revcounter }}{{ key }}  ----   {{ 	value }}</li>
    </ol>
    
    if 判断
    if 判断 结合 过滤器的
    {{ num|xxx:20}}
    {% if num|xxx:20 > 2999 %}		num|xxx:20 没有空格
    <h2>大于2999</h2>
        {% else %}
        <h2>小于等于2999</h2>
    {% endif %}
    
    模板继承
    1 创建一个模板.html文件
    2 {% extends 'moban.html' %}
    3 模板.html {%block content%} xxxxx(供替换) {%endblock (content)%}(指定或者不写名字)
    4 继承模板的文件里面{%block content%} 自己html里面的内容{% endblock%}
    5 保留模板的内容 {%block content%}{{block.super}} 自己html里面的内容{% endblock%}
    
    home1.html 文件
    css继承
    {% block css %}
    	# 此处可以这样格式修改nav的css样式,但是不会提醒书写  也可以修改js样式,前后对应
        .nav{
        height: 60px;
        background-color: orange;
        }
    {% endblock %}
        {% block content %}
        {{ block.super }}
        	{#保留继承 + 写自己的  ----添加一样了#}
       		{#继承一块  地可以改  起个名字可以写很多内容  替换模板里的页面   #}
        我是home页面
    {% endblock %}
    
    组件
    将一个完整功能模块,放到html中,使用这个模块的其他页面,直接页面中引入即可
    引入方式{%include '模块.html'},任意位置引入
    
    模板和组件的区别
    模板是配合block使用,使用情景是很多相似的网页,继承模板,修改某一部分值,文字或者css或者js
    调用方法 {% extends 'muban.html'%}	 但是文件没法再添加框架css等
    组件是给一个页面加一块功能,不能使用block模块,只是加载一部分公共的功能,不影响本html的书写
    
    组件和插件的区别
    组件是提供某一完整功能的模块,如:编辑器组件,QQ空间提供的关注组件 等。
    
    而插件更倾向封闭某一功能方法的函数。
    
    这两者的区别在 Javascript 里区别很小,组件这个名词用得不多,一般统称插件。
    

    3 自定义标签和过滤器

    内置的已经不能满足需求了

    1 app应用文件中创建一个叫templatetags的文件夹
    2 创建一个py文件,例如:mytag.py
    3 mytag.py
    	from django import template
    	register = template.Library()   # register 变量必须是这个名字
    	过滤器
    	@register.filter
        def xxx():参数最多两个
        	return 'xx'
       	标签
        @register.simple_tag
        def sss(v1,v2,v3):
        	return 'xx'
        	
    	@register.inclusion_tag('result.html')
         def sss(v1,v2,v3):		参数可以多个
        	return  {'data':data}
    

    urls 模板

    认证互相

    重定向请求

    ![组件加载 函数传输](E:Downloadqq_download eacher_huatu_downloads20pyfront_end新建文件夹组件加载 函数传输.png)

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        # url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^base/', views.base),
        # url(r'^baseee/', views.as_views),
        url(r'^login/', views.login),
        url(r'^home/', views.home),
        url(r'^menu1/', views.menu1),
        url(r'^menu2/', views.menu2),
        url(r'^menu3/', views.menu3),
        url(r'^menu11/', views.menu11),
        url(r'^menu12/', views.menu12),
        url(r'^menu13/', views.menu13),
    
        url(r'^home1/', views.home1),
        url(r'^title/', views.title),
    
        url(r'^siderbar/', views.siderbar),
        url(r'^tags/', views.tags),
    
    ]
    

    mytags

    #自定义  *  过滤器   和  自定义标签
    from django import template
    from django.utils.safestring import mark_safe
    register = template.Library()
                #生成模板定制器  名字templatetags 和 register 必须这些
    
    @register.filter
    def xxx(v1,v2):
    # def xxx(v1):
            #最多两个参数
            # v1 变量值
            # v2 过滤器参数值
        print(v1,v2)
        return v1*v2
        # return v2
    
    
    # 自定义标签   标签的形式 {%%} 那个{{}}
    @register.simple_tag
    def sss(v1,v2,v3):
                # 可以传多个参数
        print( v1 - v2 -v3)
        s = '<a href="https://www.baidu.com/">百度</a>'
                        #  只能这么配置 没法用safe老师说
        # return v1 - v2 -v3
        return mark_safe(s)
    
    
    @register.inclusion_tag('result.html')
    def aaa():
                # 这里写参数  html调用写参数
        data = [11,222,33]
        return {'data':data}
                # 这里必须与 html里的data 一致
                # return 返回个了aaa的 文件
    

    tags

    {% load mytags %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    
    </head>
    <body>
    <h1>
    {#    {{ num|xxx:'11,22,22'}}#}
        {{ num|xxx:20}}
        {% if num|xxx:20 > 2999 %}
        <h2>大于2999</h2>
            {% else %}
            <h2>小于等于2999</h2>
        {% endif %}
    </h1>
    
    
    <h1>
    {% sss num 10 14 %}
                {# 给sss三个参数       #}
    </h1>
    
    
    <h1>
    
    {% aaa %}
                {# 去找aaa函数 然后在另一个html渲染,组件加载过来       #}
    </h1>
    
    
    
     <script>
    
    </script>
    </body>
    
    </html>
    

    home1 . html

    {% extends 'moban.html' %}		 
    
      {% block css %}
             .nav{
               height: 60px;
               background-color: orange;
               }
       {% endblock %}
           {% block menu1 %}
                   <li><a href="/menu11/">caidan1</a></li>
           {% endblock %}
                   {# 或者    {% endblock menu1 %} 更清洗      #}
    {% block content %}
        {{ block.super }}
               {#保留继承 + 写自己的  ----添加一样了#}
                   {#继承一块  地可以改  起个名字可以写很多内容  替换模板里的页面   #}
        我是home页面
    {% endblock %}
    

    views

    from django.shortcuts import render,HttpResponse
    from django.views.decorators.csrf import csrf_exempt,csrf_protect
    # Create your views here.
    
    class MyData:
        def __init__(self,name):
            self.name=name
    
        def age(self):
            return '18'
        # def age2(self,num):
        #     return '18'
    
    def index(request):
        # a = 20
        # b = {'k1':'v1'}
        # c = [11,22]
        # m = MyData('一熊')
        # l1 = [{'sex':'女'},22]
        # s = 'XIAOHEI'
        # # return render(request,'index.html',{'name':'chao','m':m,'b':b,'c':c,'a':a,'l1':l1})
        # ss = 'B哥'
        # num = 12345
        # import datetime
        # date = datetime.datetime.now()
        #
        # atag = "<a href='http://www.baidu.com'>百度</a>"
        #
        # sss = 'hello beautiful girl yue ma!'
        #
        # l2 = ['hello','girl']
        #
        # print(locals())
        # return render(request,'index.html',locals())
    
        return HttpResponse('<a href="xx">百度</a>')
    
    
    def base(request):
        l1 = [11,22,33]
        name_list = ['聚宽' ,'米筐' ,'优矿'  ,  'tushare']
    
        name_dict = {'a':'聚宽' ,'b':'米筐' ,'c':'优矿'  , 'd': 'tushare'}
        num= 100
        return render(request,'base.html',{'name_list':name_list},{'name_dict':name_dict},{l1:'l1'},{num:'num'})
    
    #{'name_dict':name_dict},
    
    @csrf_exempt
    #             放行csrf ,即便是配置了认证也不做验证
    def login(request):
        if request.method == 'GET':
            return render(request,'login.html',)
    
        else:
            print(request.POST)
            return HttpResponse('no')
    def home(request):
        return render(request, 'home.html', )
    
    
    def menu1(request):
        return render(request, 'menu1.html')
    def menu2(request):
        return render(request, 'menu2.html')
    def menu3(request):
        return render(request, 'menu3.html')
    def menu11(request):
        return render(request, 'menu11.html')
    def menu12(request):
        return render(request, 'menu12.html')
    def menu13(request):
        return render(request, 'menu13.html')
    def home1(request):
        return render(request, 'home1.html', )
    
    def title(request):
        return render(request, 'title.html', )
    def siderbar(request):
        return render(request, 'siderbar.html', )
    
    def tags(request):
        num = 100
        return render(request, 'tags.html',{'num':num})
    
    

    menu1.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .nav{
                height: 60px;
                background-color: blueviolet;
                {#color: black;#}
                }
            .left-menu{
                background-color: blue;
            }
            .left-menu-1{
                background-color: orange;
                color: black;
            }
            .right-content{
                display: inline-block;
                height: 40px;
            }
        </style>
    
    </head>
    <body>
    
    <div class="nav">
        <a href="">百度</a>
        <a href="">京东</a>
        <a href="">20期</a>
        <a href="">网易云</a>
    </div>
    <div class="left-menu">
        <div class="left-menu-1">
            <ul>
                <li><a href="/menu1/">菜单一</a></li>
                <li><a href="/menu2/">菜单二</a></li>
                <li><a href="/menu3/">菜单三</a></li>
    
             </ul>
        </div>
        <div class="right-content">
            菜单一
        </div>
    </div>
    
     <script>
    
    </script>
    </body>
    
    </html>
    

    menu11.html

     {% extends 'moban.html' %}
     {% block content %}
                    {#继承一块地可以改  起个名字可以写很多内容  替换模板里的页面   #}
     我是菜单1页面
     {% endblock %}
    

    末班。html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            {#.nav{#}
            {#    height: 60px;#}
            {#    background-color: blueviolet;#}
                {#color: black;#}
            {#    }#}
            .left-menu{
                background-color: blue;
            }
            .left-menu-1{
                background-color: orange;
                color: black;
            }
            .right-content{
                display: inline-block;
                height: 40px;
            }
            {% block css %}
                .nav{
                height: 60px;
                background-color: blueviolet;
                }
            {% endblock %}
        </style>
    
    </head>
    <body>
    
    <div class="nav">
        <a href="">百度</a>
        <a href="">京东</a>
        <a href="">20期</a>
        <a href="">网易云</a>
    </div>
    <div class="left-menu">
        <div class="left-menu-1">
            <ul>
                {% block menu1 %}
                    <li><a href="/menu11/">菜单一</a></li>
                {% endblock %}
                <li><a href="/menu12/">菜单二</a></li>
                <li><a href="/menu13/">菜单三</a></li>
    
             </ul>
        </div>
        <div class="right-content">
    {#    标签写的时候不要忘了end#}
           {% block content %}
               末班页面
            {% endblock %}
        </div>
    </div>
    
    
    {#还可以block  js块#}
     <script>
    
    </script>
    </body>
    
    </html>
    
  • 相关阅读:
    pycharm如何快速替换代码中的字符
    tcp三次握手四次挥手那些事
    Python之异常处理
    Python之单例模式
    ApplicationContext
    ContextLoaderListener作用详解
    DispatcherServlet--Spring的前置控制器作用简介
    web.xml中servlet的配置
    Hibernate各种主键生成策略与配置详解【附1--<generator class="foreign">】
    java.util.ConcurrentModificationException 解决办法(转)
  • 原文地址:https://www.cnblogs.com/Doner/p/10899226.html
Copyright © 2020-2023  润新知