• 虚拟环境与Django版本区别


    虚拟环境与Django版本区别

    虚拟环境

    虚拟环境作用:

    • 当你没创建一个虚拟环境就类似于重新下载了一个纯净的python解释器

      注 : 虚拟环境不要创建太多,会消耗硬盘空间

    扩展:

    • 开发中我们会给每一个项目配备一个requirements.txt文件,里面书写了该项目所有的模块和版本
    • 只需要你输入 pip install (-r) requirements.txt 命令即可安装文件内所有模块
    • 生成 requirements.txt 文件命令 : pip freeze > requirements.txt

    pycharm创建虚拟环境

    • 点击红框所选内容即可

    在这里插入图片描述

    在这里插入图片描述

    Django版本区别

    1. Django 1.x 中路由层使用的是url方法,而在Django2.x 和 3.x 版本中路由层使用的是path方法

      url() 第一个参数支持正则

      path() 第一个参数不支持正则 写什么就匹配什么

    当然也有相应的方法使用正则:

    # 推荐使用re_path  
    from django.urls import path, re_path  
    from django.conf.urls import url
    
    	re_path(r'^index/',index)
        url(r'^login/',login)2.x 和 3.x 里面的re_path就等价于1.x里面的url    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 虽然path不支持正则 但是它内部支持五种转换器
    # 将第二个路由里面的内容先转成整型然后以关键字的形式传递给后面的视图函数
    path('index/<int:id>/',index)
    
    str : 匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
    int : 匹配正整数,包含0。
    slug : 匹配字母、数字以及横杠、下划线组成的字符串。
    uuid : 匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
    path : 匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 除了有默认的五个转换器之外 还支持自定义转换器(了解)
    1. app下新建一个.py文件写入
    class MonthConverter:	
        regex='\d{2}' # 属性名必须为regex
        def to_python(self, value):
            return int(value)
        
        def to_url(self, value):
            return value # 匹配的regex是两个数字,返回的结果也必须是两个数字
        
    2. urls.py 中    
        from django.urls import path,register_converter
        from app01.path_converts import MonthConverter  
        
        # 先注册转换器
    	register_converter(MonthConverter,'mon')
        
    	from app01 import views
        urlpatterns = [
        path('articles/<int:year>/<mon:month>/<slug:other>/', 	views.article_detail, name='aaa'),
            ]
    
    3. views.py中的视图函数
    	from django.shortcuts import render,HttpResponse,reverse
    	
        def article_detail(request,year,month,other):
            print(year,type(year))
            print(month,type(month))
            print(other,type(other))
            print(reverse('xxx',args=(1988,12,'hello'))) # 反向解析结果/articles/1988/12/hello/
            return HttpResponse('xxxx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    1. 模型层里面1.x 外键默认都是级联更新删除的,但是在2.x和3.x中需要自己手动配置参数
    models.ForeignKey(to='Publish',on_delete=models.CASCADE,on_update=models.VASCADE)
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    【编程题】统计并输出几行文字的大小写字母,数字等
    写给前端程序员的命令行入门
    顺序二叉树(堆)与链式二叉树的C语言实现
    一文搞定Postman(菜鸟必看)
    医院信息管理系统
    第一百七十四回 如何创建扇形渐变背景
    给小白的 PostgreSQL 容器化部署教程(上)
    精品Python的美食推荐系统厨房点餐订餐
    【GPU】Nvidia CUDA 编程高级教程——支持点对点访问的多 GPU
    COIN++: Neural Compression Across Modalities 论文阅读笔记
  • 原文地址:https://blog.csdn.net/qq_55752792/article/details/125597742