zoukankan      html  css  js  c++  java
  • 57

    愚蠢+满足浪费了想象+努力 愚公+天才 己所不欲勿施于人

    Django的时间够,有时间去整理以前的,老师说,每提问一个问题,好好想好好答,就像面试一样!不如同学答得好。

    作业:图书管理,删除的那个

    怎么记住?方法!长期!

    昨日回顾:

    csrf_token :

    是什么: 防御站请求伪造

    怎么做:后端django去找一个随机字符串

    ​ 在加载的页面隐藏了一个input标签里面有随机字符串(html里的{%csrf_token %}) 替换的,

    ​ 其他数据提交因为验证码不同,不通过,登录不上

    模板(模板)继承

    写一个模板

    继承语法{%extends 'xxx.html' %}

    在模板里写一个{%block content%}{%endblock%}

    被继承的文件里同样写{%block content%}{%endblock%}

    保留:{{block.super}}

    面试(流程要打出来,细节打不出来(没事)程序员)

    自定义过滤器(至多两个参数)

    有些效果加载不出来,就需要自己写过滤器来实现功能

    from Django import template
    register = template.Library()
    @register.filter				{{}}	{%%}
    过滤标签(多个参数)
    @register.simple_tag	  调用 	{%%}
    
    @register.inclusion_tag('html文件')
    def aaa():
    	return {'xx':"xxxx"}
    	return mark_safe(‘标签格式’)   正常a标签的链接
    给应用的html文件渲染   py文件的相同变量    又作为一个组件给另一个html显示
    
    from django.utils.safestring import mark_safe
    
    
    1. 静态文件(打字熟练写,手腕就不累了)

      js、css、img 等都叫静态文件,

    静态文件一般写在全局,不写在单个应用里,要不每一个应用都要配置。 
    STATIC_URL = /static/
    静态文件的路径STATICFILE_DIRS = [ os.path.join(BASE_DIR,'jingtaiwenjian'), ]  (列表可以写多个)
    ​	静态文件夹的名称可能会变 , 但是别名不变   不来回改   
    ​ 	不能暴露你的文件夹路径    
     
     {% load static %}  
     static 找别名  xx   别名找  路径
    
    写了别名之后 Django默认不支持绝对路径引入 
       {#不能这样绝对路径写,因为Django规定,让你不写死,预留可以更改的空间。更改别名,html文件不用改路径#}
    <link rel="stylesheet" href="/jingtaiwenjian/css/indexcss.css">
    
     都可以
     css
     <link rel="stylesheet" href="/static/css/indexcss.css">
     <link rel="stylesheet" href="{% static "css/indexcss.css" %}">
     js
     <script src="/static/js/indexjs.js"></script>
     img
     <img src="/static/img/1.png" alt="">
    

    url 反向解析

    url 反向解析的用法
    
    <form action="{% url 'login' %} method="post">
        {% csrf_token %}
        用户名 <input type="text" name="username">
        <input type="submit">
    </form>
    
        url(r'^userlogin', views.login,name='login')
    

    view视图反向解析的用法

    views 的
    from django.urls import reverse
    
    print(reverse('xx'))		#'/index/'
    
    # 写死了
    # return redirect('/index/')
    # return redirect('/xx/')   #'/index/'
    return redirect(reverse('xx'))# 也可以  内置反向解析
    

    动起来 数据库

    静态 :  静态文件  html  模板文件
    

    ORM

    (object Relational Mapping)

    公司人员划分

    大公司(200人以上): 专门的人做专门的事 ,每个人的效率都高,就是要跨部门沟通(牺牲效率)

    ​ 程序员要写sql,必须经过审核,完全没有问题,才会运行(不会让你跨职业)

    ​ (厉害的技术总监和架构师,都能hold住。不好的,随便干,实现功能就行)

    小公司(多):都要做 (没有对效率的要求(数据少))所以都要学

    应用程序开发人员(开发)

    数据库管理人员 (dba)

    • 数据库开发(用c语言写 能力非常强)

    • 数据库运维的(数据不丢失 效率高)

    • sql开发程序员 (dba来做 专写sql语句 )

      • 和python一样的编程语言,只不过是专门操作数据库的

      • 视图 封装的 (数据库和前端讲10几天,皮毛,数据库是短板)

      • 复杂的语句,即使写出来了,运行也很差,专门的dba写,效率又高,还不复杂

      • 他们把服务端全都写好,py开发者只要写你的逻辑

      • pymysql --- cursor.excute(‘call p1()’) 直接使用存储过程

      • cursor.fecthall()

    Django封装mysql

    对象关系映射 (python对应映射的是原生sql)

    django内嵌orm

    orm ---- django --> 翻译成sql语句 数据库再执 pymysql

    • 有翻译 开发效率高了点 执行效率低了点 对效率要求高的话不能用的
    • 用原生sql,Django可以操作一些原生 sql 的语句

    mysql服务器

    硬盘

    sqlalchemy 和 orm一样,只不过是独立的,其他框架引入就能用,和jinjia2一样

    python manage.py makemigrations

    执行指令 , 把数据加载到0001

    db

    app01

    下面的是app01内置的应用 只要应用就有model表

    django内置的应用生成的表

    把他生成(翻译)对应的sql表

    1 去表里找一下有没有过

    2 然后执行

    INSTALLED_APPS
      'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',		# 不能注销了	,有什么app,创建了什么表  其他的内置可以不用
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config',
    

    app01_book

    app01_migrations 记录models发生了哪些变化

    • 哪些文件被执行过 执行过的不被执行了

    db 中

    有值情况:不允许为空还没有默认值 : 默认值 都可以改 (插入的)

    没值情况: 可以不用设置(加了一个新表)

    删表的时候,把migrations 中的 0001_initial 和 app01_book 都删了

    要不无法更新

    初始化问题: 库删了 记录删了 (都)

    添加:

    在更新一下models migrations 就有了2 add

    python manage.py makemigrations  #生成记录,每次修改了models里面的内容或者添加了新的app,新的app里面写了models里面的内容,都要执行这两条
    python manage.py migrate         #执行上面这个语句的记录来创建表,生成的表名字前面会自带应用的名字,例如:你的book表在mysql里面叫做app01_book表
    

    可以切换各种 sql数据库(为什么orm效率低,还这么多人用)

    auto_now 自动更新

    auto_now_add 自动添加

    把这个数据库翻译成另一个的数据库语句

  • 相关阅读:
    CPT104-labs
    Java-数据结构-ArrayList
    INT104-lab13[Parzen Window Method][此方法无数据集划分]
    INT104-lab12 [KNN Algorithm][lambda表达式]
    INT104-lab11 [聚类] [iris数据集] [K-means Algorithm]
    Nginx配置https兼容http
    JS获取整个网页html代码
    nginx重启生效conf文件的修改
    WampServer
    在win10系统中,开启hyper-v要满足下列条件
  • 原文地址:https://www.cnblogs.com/Doner/p/10905319.html
Copyright © 2011-2022 走看看