虚拟环境作用:
当你没创建一个虚拟环境就类似于重新下载了一个纯净的python解释器
注 : 虚拟环境不要创建太多,会消耗硬盘空间
扩展:
- 开发中我们会给每一个项目配备一个requirements.txt文件,里面书写了该项目所有的模块和版本
- 只需要你输入 pip install (-r) requirements.txt 命令即可安装文件内所有模块
- 生成 requirements.txt 文件命令 : pip freeze > requirements.txt
pycharm创建虚拟环境
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
- 虽然path不支持正则 但是它内部支持五种转换器
# 将第二个路由里面的内容先转成整型然后以关键字的形式传递给后面的视图函数
path('index/<int:id>/',index)
str : 匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int : 匹配正整数,包含0。
slug : 匹配字母、数字以及横杠、下划线组成的字符串。
uuid : 匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path : 匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
- 除了有默认的五个转换器之外 还支持自定义转换器(了解)
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.x 外键默认都是级联更新删除的,但是在2.x和3.x中需要自己手动配置参数
models.ForeignKey(to='Publish',on_delete=models.CASCADE,on_update=models.VASCADE)