1. 程式人生 > 其它 >Django框架版本區別

Django框架版本區別

目錄

一:django版本區別

django中1.x與2.x,3.x之間路由的區別
1.django1.X路由層使用的是url方法
而在django2.Xhe3.X版本中路由層使用的是path方法

1.X第一個引數正則表示式
url()
2.X和3.X第一個引數不支援正則表示式,寫什麼就匹配什麼,100%精準匹配
path()
如果想要使用正則,那麼2.X與3.X也有相應的方法
from django.urls import path,re_path
re_path 	# 等價於 1.X裡面的url方法
re_path(r'^index/',index),

url 2.x和3.x不推薦使用 但是可以用
from django.conf.urls import url
url(r'^login/',login)
2.雖然path不支援正則 但是它的內部支援五種轉換器
# 將第二個路由裡面的內容先轉成整型然後以關鍵字的形式傳遞給後面的檢視函式
path('index/<int:id>/',views.index)

def index(request,id):  # id當作關鍵字進來
    print(id,type(id))
    return HttpResponse('index')
3.五種轉換器
str,匹配除了路徑分隔符(/)之外的非空字串,這是預設的形式
int,匹配正整數,包含0。
slug,匹配字母、數字以及橫槓、下劃線組成的字串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字串,包含了路徑分隔符(/)(不能用?)
4.除了有預設的五個轉換器之外 還支援自定義轉換器(瞭解)
class MonthConverter:
     # 屬性名必須為regex
    regex='\d{2}'  # 匹配兩個數字

    def to_python(self, value):
        return int(value)  # int型別

    def to_url(self, value):
        return value # 匹配的regex是兩個數字,返回的結果也必須是兩個數字
	
# 使用轉換器	
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'),

]
5.模型層裡面1.X外來鍵預設都是級聯更新刪除的
但是到了2.X和3.X中需要你自己手動配置引數

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

2.x和3.x配置外來鍵級聯更新刪除
on_delete=models.CASCADE

q