django初步了解2

django初步了解2

表的字段增删改查

	新增的字段
                1.直接提供默认值 default
                2.设置改字段可以为空 null=True
            注意的是 不要轻易的注释models.py中任何跟数据库相关的代码
            主要是跟数据库相关的代码 你在处理的时候一定要小心谨慎

数据的增删改查

数据的查
        get() 
        1.条件存在的情况下 获取的直接是数据对象本身
        2.条件不存在的情况下 会直接报错  所以不推荐你使用get方法查询数据

        filter()
        1.条件存在的情况下 获取到的是一个可以看成列表的数据 列表里面放的才是一个个数据对象本身
        2.条件不存在的情况下  并不会报错 返回的是一个可以看成空列表的数据
        3.filter括号内可以写多个参数逗号隔开  这多个参数在查询的时候 是and关系
        4.filter的结果支持索引取值  但是不支持负数  并且不推荐你使用索引  推荐你使用它封装好的方法 first取第一个数据对象
        
数据的增
        1.create()
        1.括号内些关键字参数的形式 创建数据
        2.该方法会有一个返回值 返回值就是当前对象本身
        2.利用对象点方法的方式
        user_obj = User(username='jason')
        user_obj.save()  # 将当前对象保存到数据库中
       
数据的改
		1.先查询出来,然后.取值直接赋值,之后save()保存
    	2.用updata(修改的键=修改的值)

数据的删
		1.先查询出数据对象,之后调用.delete()方法删除
    	2.不能直接用models.users.objects.delete(),为了安全起见,先查再删

反向解析和分组

根据某一个东西 动态解析出一个结果 该结果可以直接访问对应的url
    
    url(r'^test_add/', views.testadd,name='xxx')
    
    前端解析
        {% url 'xxx' %}
    
    后端解析
        from django.shortcuts import render,HttpResponse,redirect,reverse
        url = reverse('xxx')
    
    
    无名分组反向解析
        url(r'^test_addsajdsjkahdkjasjkdh/(\d+)/', views.testadd,name='xxx'),
        
        前端解析
            <a href="{% url 'xxx' 1 %}">222</a>
        
        后端解析
            url = reverse('xxx',args=(1,))
    
    有名分子反向解析
        url(r'^test_addsajdsjkahdkjasjkdh/(?P<year>\d+)/', views.testadd,name='xxx'),
        前端解析
            <a href="{% url 'xxx' 1 %}">222</a>
            
            <a href="{% url 'xxx' year=1 %}">222</a>
        
        后端解析
            url = reverse('xxx',args=(1,))
            
            
            url = reverse('xxx',kwargs={'year':123})
            
  注意 反向解析的别名 一定不要重复 

路由分发

django里面的app可以有自己的static文件,templates文件夹,urls.py(******)   

    项目名下面的urls.py不再做路由与视图函数对应关系
    而是做一个中转站  只负责将请求分发到不同的app中 
    然后在app的urls.py完成路由与视图函数的对应关系
    from django.conf.urls import url,include

    url(r'^app01/',include(app01_urls)),
    url(r'^app02/',include(app02_urls))

名称空间

	总路由
        url(r'^app01/',include('app01.urls',namespace='app01'))
        url(r'^app02/',include('app02.urls',namespace='app02'))
        
        print(reverse('app01:index'))
        print(reverse('app02:index'))
    
    
    通常情况下 起别名的时候 前面可以加上你的应用名

伪静态

	将动态网页假装成是静态的
    这样做的目的是为了提高搜索引擎的SEO查询优先级
    搜索在收录网站的时候 会优先收录看上去像是静态文件的资源
    
    但是无论你怎么使用伪静态进行优化 你也干不过RMB玩家

虚拟环境

	通常针对不同的项目 只会安装该项目所用的模块 用不到的一概不装
    
    
    不同的项目有专门的解释器环境与之对应
    
    每创建一个虚拟环境 就类似于重新下载了一个纯净的python解释器
    
    虚拟环境不要创建太多个 
posted @ 2019-10-22 22:08  wind叶  阅读(106)  评论(0编辑  收藏  举报