zoukankan      html  css  js  c++  java
  • 昨日内容回顾

    查询数据
    	get()
        
    	filter()
    	all() 
    创建数据
    	create()
    	
    	user_obj = models.Userinfo(**kwargs)
    	user_obj.save()
    

    数据的编辑与删除
    	后端如何获取前端用户想要编辑的数据对象
            1.利用get请求url后面可以携带参数的方式 将数据的主键值传递给后端
      
        编辑功能的思路:获取用户想要编辑的数据对象 展示到前端页面 用户修改之后点击修改 再去修改数据库中对应的数据
    	1.方式1
        modeles.Userinfo.objects.filter(**kwargs).update()  # 批量更新
    	2.方式2  (不推荐使用 效率极低 会将每一个字段对应的值全部重写一遍)
        edit_obj = models.Userinfo.objects.filter(pk=edit_id).first()  # pk会自动帮你查找当前表的主键字段
        edit_obj.username = username
        edit_obj.password = password
        edit_obj.save()  
        
        删除功能:
        models.Userinfo.objects.filter(pk=delete_id).delete()
        """说真正的数据是不会被删除的 通常都是给数据设置一个是否删除的标志位"""
    
    

       
    图书管理系统表设计(orm如何创建表与表之间的关系)
        一对多
            一对多外键字段应该建在多的那一方
            models.ForeignKey(to='关联的表名')  # 自动建关系 默认就是跟关联表的主键字段
            """
            ForeginKey字段在创建的时候 orm会自动在字段后面加_id
            """
        多对多        
            ManyToManyField(to='关联的表名')  # 并不会创建一个实际字段 仅仅是用来告诉django orm自动创建第三张表
        
         一对一
            OneToOneField(to='关联的表名')
            """
            OneToOneField字段在创建的时候 orm会自动在字段后面加_id
            """
    

    路由层
    	路由匹配
            url第一个参数是正则
            
    	无名分组
            url(r'^index/(d+)/',views.index)
            在调用视图函数index的时候 会将d+匹配到的内容 当做位置参数传递给index
            
    	有名分组
            url(r'^index/(?P<year>d+)/',views.index)
            在调用视图函数index的时候 会将d+匹配到的内容 当做关键字参数(year='')传递给index
            
            """注意 无名有名不能混合使用 但是可以单独使用 单独使用的时候支持多个"""
            
    	反向解析
    		本质:根据某一个东西得出一个结果  该结果可以直接访问到对应的url
    		
            没有正则表达式的反向解析
                url(r'^index/',views.index,name='xxx')  # 起别名 别名一定不要重复
                
                前端反向解析
                    {% url 'xxx' %}
                后端反向解析
                    from django.shortcuts import reverse
                    url = reverse('xxx')
    		
            无名和有名分组的反向解析
                url(r'^index/(d+)/',views.index,name='xxx')
                
                前端反向解析
                    {% url 'xxx' 123 %}
                后端反向解析                
                	from django.shortcuts import reverse                
                	url = reverse('xxx',args=(123,))                
                	"""个人建议:在处理容器类型数据的时候 无论有几个值 你最后都加一个逗号"""                   url(r'^index/(?P<year>d+)/',views.index,name='xxx')                        	      
                前端反向解析                
                {% url 'xxx' 123 %}                
                {% url 'xxx' year=123 %}  # 了解
                后端反向解析
                    from django.shortcuts import reverse
                    url = reverse('xxx',args=(123,))
                    url = reverse('xxx',kwargs={'year':123})  # 了解
                    """个人建议:在处理容器类型数据的时候 无论有几个值 你最后都加一个逗号"""
    

    	路由分发
            django中的每一个app都可以有自己独立的static文件夹,templates文件夹,urls.py等
            正是由于上述的特点 你基于django开发项目 就真正可以做到分组分功能分模块独立的去开发
            
            当应用特别多的时候 总路由中的代码过于冗长 不好维护
            
            # 1.在应用下自己手动创建urls.py
            # 2.在路由中导入 
                # 1
                from app01 import urls as app01_urls
                from app02 import urls as app02_urls
                
                url(r'^app01/',include(app01_urls)),
                url(r'^app02/',include(app02_urls))
                # 2
                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'))
                
               # app01 urls.py
                url(r'^index/',views.index,name='index')
                # app02 urls.py
                url(r'^index/',views.index,name='index')
                
                url = reverse('app01:index')
                url = reverse('app02:index')
                {% url 'app01:index' %}
                {% url 'app02:index' %}
                
                # app01 urls.py
                url(r'^index/',views.index,name='app01_index')
                # app02 urls.py
                url(r'^index/',views.index,name='app02_index')
    

    伪静态
        url看起来像是一个静态页面(.html结尾)
    

    虚拟环境
        不同的项目应该有各自独立的解释器环境 最大化节省资源
        实际功能中针对不同的项目 会有一个叫requestsments.txt文件
        该文件中列出来是一个个该项目需要用的到模块名和版本号
        eg:
            django = 1.11.11
            nginx = 1.21
        后期通过命令直接会去下载该文件内所有的模块及对应版本
        
        虚拟环境 就类似于是个python解释器环境 每创建一个就类似于重新下载了一个纯净的python解释器环境
        建议 你的机器上不要有态多的虚拟环境
        当前我们这个阶段 建议你所有的模块全部都安装在本机环境中
    

    django版本区别
        url和path
        path第一个参数不支持正则 写什么就匹配什么 精准匹配
        re_path跟url是一模一样的用法
        
        提供五个默认的转换器  
        
        还支持用户自定义转换器
    
  • 相关阅读:
    java移位的具体应用
    mysql计划任务(轮询执行脚本)
    算法题(1)
    transient关键字及Serializable的序列化与反序列化
    java后台调用短信接口,实现发送短信验证码的控制层实现
    防卫导弹
    C++ STL
    字母转换
    三分·三分求极值
    各种数据类型取值范围
  • 原文地址:https://www.cnblogs.com/aden668/p/11727378.html
Copyright © 2011-2022 走看看