django版本区别

路由层

区别

区别 django1.x django2.x or 3.x
方法 url方法from django.conf.urls import url path方法from django.urls import path
url参数 第一个参数支持正则表达式 第一个参数不支持正则表达式

额外补充

关于3.x版本不支持正则表达式的问题

  • re_path

如果习惯了使用正则表达式,3.x版本提供了另一个方法re_path,re_path就等价于1.x版本中的url

from django.contrib import admin
from django.urls import path,re_path
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index',views.index),
    re_path('^index/\d+',views.index),
]
  • 转换器

虽然path不支持正则,但是内部支持五种转换器

path('index/<int:id>/',views.index)
# 将第二个路由中的内容转成整形然后以关键字参数的形式传递给后面的视图函数

def index(request,id):
    print(id,type(id))
    return HttpResponse('index')
五种转换器介绍
- str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
- int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
  • 自定义转换器

待定

模型层

  • 1.x版本外键默认是级联更新和级联删除的

  • 2.x 3.x版本需要手动配置参数

    models.ForeignKey(to='Publish')
    models.ForeignKey(to='Publish',on_delete=models.CASCADE...)

posted @ 2020-06-01 20:19  微信搜索-程序媛小庄  阅读(759)  评论(0编辑  收藏  举报