最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的Django框架基礎(chǔ)及安裝教程

 更新時(shí)間:2025年11月06日 11:50:03   作者:踏遍星河0806  
本文介紹了Django框架的基本概念、安裝、項(xiàng)目創(chuàng)建和啟動(dòng)方法,以及路由配置、ORM思想和使用,Django是一個(gè)全棧框架,遵循MTV模式,提供自動(dòng)化工具和ORM,簡化了Web開發(fā)流程,感興趣的朋友跟隨小編一起看看吧

一.Django框架概述

Django是一個(gè)基于Python的高級Web框架,遵循“快速開發(fā)”和“DRY(Don't Repeat Yourself)”原則。以下為其核心特點(diǎn):

  • 全棧框架:內(nèi)置ORM、模板引擎、表單處理、認(rèn)證系統(tǒng)等組件,覆蓋開發(fā)全流程。
  • MTV模式:類似MVC但略有不同,分為Model(數(shù)據(jù)層)、Template(表現(xiàn)層)、View(業(yè)務(wù)邏輯層)。
  • 自動(dòng)化工具:提供命令行工具manage.py,支持?jǐn)?shù)據(jù)庫遷移、測試、調(diào)試等。

二.Django框架安裝

方式一:命令行安裝Django

安裝:pip install Django==3.2.25
卸載:pip uninstall Django

三.Django項(xiàng)目創(chuàng)建

方式一:命令行創(chuàng)建

django-admin startproject 項(xiàng)目名稱

方式二:通過pycharm創(chuàng)建項(xiàng)目

四.Django項(xiàng)目啟動(dòng)

方式一:命令行啟動(dòng)

cmd窗口進(jìn)入Django項(xiàng)目文件夾:

python manage.py runserver

如果需要修改啟動(dòng)端口號,那么:python manage.py runserver 8080

方式二:通過pycharm進(jìn)行項(xiàng)目啟動(dòng)

Django項(xiàng)目默認(rèn)的端口號為8000

五.Django項(xiàng)目路由配置

1.自定義路由配置:

urlpatterns = [
    path('login/', login),
]
def login(request):
    print("訪問到了登錄函數(shù)")
    return render(request,"login.html")

容易發(fā)生的錯(cuò)誤:

1.函數(shù)沒有返回值時(shí)報(bào)錯(cuò):

2.函數(shù)返回值格式不正確:

3.頁面正常訪問中,當(dāng)需要加載靜態(tài)資源(css文件、js文件、圖片 …... ),需要在setting.py文件中做配置

STATIC_URL = "/static/"
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

頁面跳轉(zhuǎn)-轉(zhuǎn)發(fā)與重定向

轉(zhuǎn)發(fā)(render)

def page(request):
    return render(request, "main.html")
urlpatterns = [
    path("login/", login),
    path("login_action/", login_action),
    path("page/", page),
]

重定向(redirect)

def main(request):
    return render(request, "main.html")
def page(request):
    return redirect("/main/")
urlpatterns = [
    path("login/", login),
    path("login_action/", login_action),
    path("page/", page),
    path("main/", main),
]

轉(zhuǎn)發(fā)和重定向的區(qū)別

轉(zhuǎn)發(fā)(Forward)和重定向(Redirect)的核心區(qū)別在于:轉(zhuǎn)發(fā)是服務(wù)器內(nèi)部行為,一次請求且地址欄不變;重定向是客戶端行為,兩次請求且地址欄變化。
?核心機(jī)制差異?
    ?行為主體?。
        ?轉(zhuǎn)發(fā)?:由服務(wù)器內(nèi)部完成(如通過RequestDispatcher),客戶端無感知
        ?重定向?:服務(wù)器返回狀態(tài)碼(如302)和新URL,客戶端重新發(fā)起請求
    ?請求次數(shù)與效率?。
        ?轉(zhuǎn)發(fā)?:僅一次請求,性能更高
        ?重定向?:兩次獨(dú)立請求,效率較低
?功能特性對比?
    ?地址欄變化?。
        ?轉(zhuǎn)發(fā)?:地址欄顯示原始URL
        ?重定向?:地址欄更新為新URL
    ?數(shù)據(jù)共享能力?。
        ?轉(zhuǎn)發(fā)?:通過request.setAttribute()共享數(shù)據(jù)
        ?重定向?:需依賴Session或URL參數(shù)傳遞數(shù)據(jù)
    ?應(yīng)用范圍限制?。
        ?轉(zhuǎn)發(fā)?:僅限同一Web應(yīng)用內(nèi)資源
        ?重定向?:可跨應(yīng)用或訪問外部資源

六.ORM思想

ORM(對象關(guān)系映射)的核心優(yōu)勢主要體現(xiàn)在以下方面:

提升開發(fā)效率

通過將數(shù)據(jù)庫表結(jié)構(gòu)映射為程序?qū)ο?,開發(fā)者無需手動(dòng)編寫復(fù)雜的SQL語句即可完成數(shù)據(jù)操作,顯著提升編碼效率。框架如 SQLAlchemy 通過聲明式映射實(shí)現(xiàn)Python類與數(shù)據(jù)庫表的關(guān)聯(lián),支持鏈?zhǔn)讲樵儤?gòu)建。 ‌

簡化數(shù)據(jù)操作邏輯

ORM框架提供數(shù)據(jù)消毒、事務(wù)管理、動(dòng)態(tài)查詢生成等功能,開發(fā)者只需關(guān)注業(yè)務(wù)邏輯而無需深究數(shù)據(jù)庫細(xì)節(jié)。

降低維護(hù)成本

統(tǒng)一的數(shù)據(jù)模型定義便于團(tuán)隊(duì)協(xié)作開發(fā),且能快速適配不同數(shù)據(jù)庫,Django、Ruby on Rails、等框架通過ORM實(shí)現(xiàn)跨平臺開發(fā),減少因數(shù)據(jù)庫遷移導(dǎo)致的代碼修改。 ‌

增強(qiáng)安全性

通過參數(shù)化查詢和預(yù)編譯語句減少SQL注入風(fēng)險(xiǎn) Laravel 等框架的ORM組件自動(dòng)處理數(shù)據(jù)過濾和轉(zhuǎn)義操作,降低數(shù)據(jù)污染風(fēng)險(xiǎn)。 ‌

促進(jìn)架構(gòu)規(guī)范

強(qiáng)制采用MVC架構(gòu)模式,使業(yè)務(wù)邏輯與數(shù)據(jù)訪問邏輯分離,代碼結(jié)構(gòu)更清晰。例如,Android Room庫通過ORM強(qiáng)制實(shí)現(xiàn)數(shù)據(jù)訪問層與業(yè)務(wù)層的隔離。

七.Django中使用ORM(掌握?。。?/h2>

第一步:改造上述Django代碼結(jié)構(gòu),需要?jiǎng)?chuàng)建特殊文件夾

方式一:通過命令行創(chuàng)建并配置

python manage.py startapp app

方式二:通過pycharm創(chuàng)建

第二步:在項(xiàng)目的settings.py文件中配置數(shù)據(jù)庫信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "spt2505", # 數(shù)據(jù)庫名稱
        "HOST":"127.0.0.1", # 數(shù)據(jù)庫所在IP地址
        "PORT":3306, # 數(shù)據(jù)庫端口號
        "USER":"root", # 用戶名
        "PASSWORD":"root" # 密碼
    }
}

第三步:確定需要用pymysql來操作數(shù)據(jù)庫

在與settings.py文件同一等級的init.py文件中配置pymysql

import pymysql
pymysql.install_as_MySQLdb()

第四步:配置映射信息

在app文件夾下的models.py文件中做ORM映射

class User(models.Model):
    id = models.AutoField(primary_key=True)
    username = models.CharField(max_length=20)
    password = models.CharField(max_length=20)

第五步:通過命令實(shí)現(xiàn)ORM映射(Django程序通過類信息自動(dòng)創(chuàng)建表格)

python manage.py makemigrations
python manage.py migrate
報(bào)錯(cuò)備注:
Django版本與MySQL 5.5的兼容性?:
Django與MySQL的版本兼容性如下:
    ?Django 2.0及以上版本支持MySQL 5.5及以上版本?。
    ?Django 2.2及以上版本支持MySQL 5.5、5.6和5.7版本?。
    ?Django 3.0及以上版本支持MySQL 5.6、5.7和8.0版本??。
因此,?Django 4.2版本不再支持MySQL 5.5?,因?yàn)镈jango 4.2官方不再支持MySQL 5.5,這會(huì)導(dǎo)致不兼容問題?。
解決方案
    ?降低Django版本?:可以將Django版本降級到3.2.18或更早的版本,以繼續(xù)使用MySQL 5.5?2。
    ?升級MySQL版本?:將MySQL升級到8.0或更高版本,以兼容Django 4.2?2
Django3.2版本與mysql5.5版本不兼容問題:
解決方式一:降低Django版本
解決方式二:升級Mysql版本
解決方式三:在settings.py文件追加兼容性配置
# 設(shè)置兼容
from django.db.backends.mysql.base import DatabaseWrapper
DatabaseWrapper.data_types['DateTimeField'] = 'datetime'

第六步:在views.py文件中開發(fā)業(yè)務(wù)邏輯模塊

from django.shortcuts import render,redirect
from app.models import User
# Create your views here.
?
def login(request):
    # print("訪問到了登錄函數(shù)")
    return render(request,"login.html")
?
def login_action(request):
    print("登錄動(dòng)作")
    # 接收界面參數(shù)
    username = request.POST.get("username")
    password = request.POST.get("password")
?
    if User.objects.filter(username=username,password=password):
        #登錄成功
        return redirect("/main/")
    else:
        return render(request, "login.html",{"msg":"用戶名或密碼錯(cuò)誤!"})
?
def main(request):
    return render(request, "main.html")

第七步:在url.py文件中導(dǎo)入views.py文件

from django.urls import path
from app import views
urlpatterns = [
    path("login/", views.login),
    path("login_action/", views.login_action),
    path("main/", views.main),
]

八.request請求

"""
    get方式:
        01:刷新瀏覽器地址欄
        02:a鏈接 href屬性
        03:window.location.href
        04:form表單中,method="GET"
        05:ajax請求中,type:"GET"
    post方式:
        01:form表單中,method="POST"
        02:ajax請求中,type:"POST"
"""
def requestTest(request):
    # print(request)
    # print(type(request))
    # print(request.method) # 得到請求方法   GET  POST   PUT  DELETE
    # print(request.GET.get("id")) # 接收前臺參數(shù)
    # print(request.FILES.get("filename"))  # 接收前臺文件
    # 了解
    # print(request.path)  # 獲取請求路由
    # print(request.path_info)  # 獲取請求路由
    # print(request.encoding) # 編碼
    # print(request.scheme)  # 請求協(xié)議
    # print(request.body)  # 請求體
    # print(request.get_port())  # 8000
    # print(request.get_host())  #localhost:8000
    # print(request.is_ajax()) # 當(dāng)次請求是否是ajax
    return HttpResponse("lufei,海賊王,21")

九.response響應(yīng)

"""
    01:轉(zhuǎn)發(fā)render或重定向redirect
    02:直接通過HttpResponse響應(yīng)普通字符串
    03:在02響應(yīng)的基礎(chǔ)之上,如果字符串有特殊格式(JSON格式),那么響應(yīng)回去的數(shù)據(jù)可以做特殊處理
        響應(yīng)JSON格式字符串
            方式一:手動(dòng)拼接
            方式二:通過json模塊將字典轉(zhuǎn)換為json格式字符串 (需要導(dǎo)入: import json)
            方式三:通過JsonResponse  (需要導(dǎo)入:from django.http import JsonResponse)
"""
import json
from django.http import JsonResponse
def responseTest(request):
    #name = "{\"username\":\"lufei\",\"title\":\"海賊王\",\"age\":21}"
    name = {"username":"張三","password":"123456","address":"太原"}
    # return HttpResponse(json.dumps(name))
    return JsonResponse(name)

十.orm模型查詢(M)

各種查詢方式

方式一:Django中自帶的admin界面

在admin.py文件中注冊模型數(shù)據(jù)

admin.site.register(models.User)

通過命令追加admin界面的登錄信息

python manage.py createsuperuser

訪問admin界面,查看是否有模型數(shù)據(jù)

方式二:通過pycharm自帶的Django控制臺

方式三:通過配置在任意的python文件中做測試

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM20250807.settings")
    import django
    django.setup()
    from app.models import User
    user = User.objects.get(id=1)
    print(user.username)

ORM中查詢機(jī)制

如果控制臺需要顯示sql語句,需要在setting.py文件中配置日志信息

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
        'level':'DEBUG',
        'class':'logging.StreamHandler',
        },
    },

    'loggers': {
    'django.db.backends': {
        'handlers': ['console'],
        'propagate': True,
        'level':'DEBUG',
        },
    }
}

單表查詢

01.查詢所有

userlist = User.objects.all() print(userlist)

02.通過主鍵或其他字段查詢

得到的結(jié)果是唯一的對象 {{user.username}}

要求get查詢得到的結(jié)果必須是唯一的

如果數(shù)據(jù) 不存在 或 查詢的結(jié)果比較多,那么會(huì)報(bào)錯(cuò) get() returned more than one User -- it returned 2!

user = User.objects.get(username="喬巴43324") print(user)

03.通過filter查詢

得到的結(jié)果是集合 {% for user in userlist %} {{user.username}}

如果數(shù)據(jù)不存在,則返回空集合

user = User.objects.filter(username="路飛123") print(user)

04.通過values 當(dāng)前臺界面需要指定字段時(shí)使用 json格式 {key:value,key:value}

userlist = User.objects.all().values("id","username") print(userlist)

05.通過values_list 當(dāng)前臺界面需要指定字段時(shí)使用 得到得只有值,[(1, '路飛123'), (2, '喬巴'), (3, '喬巴')]

userlist = User.objects.all().values_list("id", "username") print(userlist)

06.exclude(參數(shù)) 查詢除了滿足條件的所有數(shù)據(jù)

userlist = User.objects.exclude(id=2) print(userlist)

07 .order_by(參數(shù)) 默認(rèn)升序

.order_by(-參數(shù)) 降序

.order_by(參數(shù)1,參數(shù)2) 如果默認(rèn)按照參數(shù)1升序,如果參數(shù)1一樣,那么按照參數(shù)2升序

userlist = User.objects.order_by("sal","-id") print(userlist)

08 .reverse() 反序輸出

userlist = User.objects.order_by("-id").reverse() print(userlist)

09 .count 統(tǒng)計(jì)

userlist = User.objects.all().count() print(userlist)

10 .first()或者.last() 查詢列表中的第一條或最后一條,得到是對象

userlist = User.objects.all().last() print(userlist)

11 .exists() 查詢數(shù)據(jù)是否存在,返回boolean類型

userlist = User.objects.filter(id=2).exists() print(userlist)

單表下劃線查詢

屬性__gt > 大于

屬性__gte >= 大于等于

屬性__lt < 小于

屬性__lte

屬性__gt=1,屬性__lt=5 select * from t_user where id > 1 and id < 5

屬性__range=[1,3] id>=1 and id

屬性__in=[1,3] select * from t_user where id = 1 or id = 3

屬性__contains 模糊匹配 like %路% 匹配英文區(qū)分大小寫

屬性__icontains 模糊匹配 like %路% 匹配英文不區(qū)分大小寫

屬性__startswith="路" 模糊匹配 like 路%

屬性__endswith="路" 模糊匹配 like %路

userlist = User.objects.filter(id__gt=1,id__lte=3)
userlist = User.objects.filter(id__range=[1,3])
userlist = User.objects.filter(id__in=[1,3])
userlist = User.objects.filter(username__contains="LU")
print(userlist)

orm_F和Q查詢

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM20250807.settings")
    import django
    django.setup()
    from app.models import Book, Press, BookType
    from django.db.models import F,Q
    #select * from app_book where sale > kucun
    #booklist = Book.objects.filter(sale__gte=F("kucun"))
    #print(booklist)
    #id 1,3   range   in
    bookes = Book.objects.filter(Q(id__gte=3) | Q(id__lte=1))
    print(bookes)vvv

聚合查詢

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM20250807.settings")
    import django
    django.setup()
    from app.models import Book, Press, BookType
    from django.db.models import F,Q,Max,Min,Sum,Count,Avg
    #查詢圖書中價(jià)格的最大值和最小值
    # books = Book.objects.aggregate(Avg("bookprice"),Min("bookprice"))
    # print(books)
    # 分組 (默認(rèn)分組)
    # books = Book.objects.annotate(Count("bookprice"))
    # print(books)
    result = Book.objects.values("press_id").annotate(num = Count("id")).values("press_id","num")
    print(result)

一對多查詢

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM20250807.settings")
    import django
    django.setup()
    from app.models import Book, Press, BookType

1.從 多方 查找 一方

book = Book.objects.get(id=2)
print(book)
print(book.press.pressname)

2.從 一方 查找 多方 (查詢id為1的出版社對應(yīng)的所有圖書)

booklist = Book.objects.filter(press_id=1)
print(booklist)

presslist = Press.objects.get(pressname="清華大學(xué)出版社").id
print(presslist)

3.從 一方 查找 多方 (查詢清華大學(xué)出版社對應(yīng)的所有圖書) 發(fā)送2條sql語句

#select * from app_book where press_id = (select id from app_press where pressname = "清華大學(xué)出版社")
booklist = Book.objects.filter(press_id=Press.objects.get(pressname__contains="人民").id)
print(booklist)

4.從 一方 查找 多方 (查詢清華大學(xué)出版社對應(yīng)的所有圖書) 發(fā)送1條sql語句

在外鍵字段上追加雙下劃線代表 跨表聯(lián)查

booklist = Book.objects.filter(press__pressname__contains="清華")
print(booklist)

5.圖書名稱 出版社名稱 .values("自己的字段“,"外鍵字段__名稱")

booklist = Book.objects.all().values("bookname","press__pressname") 
print(booklist)

6.反向查詢 (從一方作為發(fā)起者查詢多方數(shù)據(jù))

方式一: 一方對象名稱.多方類名小寫_set.all() 發(fā)送多條sql

方式二: 在外鍵配置的屬性中,追加關(guān)聯(lián)字段

press = models.ForeignKey(to="Press",related_name="books",
press = Press.objects.get(pressname="清華大學(xué)出版社")
print(press)
print(press.book_set.all())
press = Press.objects.get(books__bookname="鹿鼎記")
print(press)

多對多查詢

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM20250807.settings")
    import django
    django.setup()
    from app.models import Book, Press, BookType
    #booktype = BookType.objects.get(id=1)
    #print(booktype)
    # 設(shè)置多對多關(guān)系
    #booktype.books.set([1,2,3])
    # 通過圖書類型查找圖書
    # booktype = BookType.objects.get(id=1)
    # print(booktype.books.all())
    # 通過圖書查找圖書類型
    # 方式一
    # 方式二
    # book = Book.objects.get(id=2)
    # print(book.booktype_set.all())
    book = Book.objects.filter(booktypes__id=1)
    print(book)

十一.反射

反射:
    getattr()   setattr()  hasattr()  delattr()
    01:操作類屬性和類方法、靜態(tài)方法
        獲取屬性:getattr(類名,"屬性名稱字符串")
        設(shè)置屬性:setattr(類名,"屬性名稱字符串",需要設(shè)置的新的值)
        獲取方法:getattr(類名,"方法名稱字符串")
        執(zhí)行方法:getattr(類名,"方法名稱字符串")()
    02:操作對象屬性和對象方法
        獲取屬性:getattr(對象名稱,"屬性名稱字符串")
        執(zhí)行方法:getattr(對象名稱,"方法名稱字符串")(參數(shù))
    03:操作第三方模塊
        執(zhí)行方法:getattr(模塊名稱,"方法名稱字符串")(參數(shù))
    04:自己的模塊
        執(zhí)行方法:getattr(sys.modules["__main__"],"方法名稱字符串")(參數(shù))

十二.Session和Cookie

登錄:認(rèn)證與授權(quán)

到此這篇關(guān)于Python-Django框架基礎(chǔ)的文章就介紹到這了,更多相關(guān)Python Django框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 炫技操作之合并字典的七種方法

    Python 炫技操作之合并字典的七種方法

    這篇文章主要介紹了Python 炫技操作之合并字典的七種方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Pandas中datetime數(shù)據(jù)類型的使用

    Pandas中datetime數(shù)據(jù)類型的使用

    本文主要介紹了Pandas中datetime數(shù)據(jù)類型的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • python BeautifulSoup庫的安裝與使用

    python BeautifulSoup庫的安裝與使用

    這篇文章主要介紹了python BeautifulSoup庫的安裝與使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python中卷積神經(jīng)網(wǎng)絡(luò)(CNN)入門教程分分享

    Python中卷積神經(jīng)網(wǎng)絡(luò)(CNN)入門教程分分享

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是一類特別適用于處理圖像數(shù)據(jù)的深度學(xué)習(xí)模型,本文介紹了如何使用Keras創(chuàng)建一個(gè)簡單的CNN模型,并用它對手寫數(shù)字進(jìn)行分類,需要的可以參考一下
    2023-05-05
  • Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容

    Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容

    Python有一個(gè)第三方模塊叫?prettytable,專門用來將數(shù)據(jù)格式輸出。本文將通過示例為大家詳細(xì)講講prettytable的用法,感興趣的可以了解一下
    2022-07-07
  • Python竟能畫這么漂亮的花,帥呆了(代碼分享)

    Python竟能畫這么漂亮的花,帥呆了(代碼分享)

    這篇文章主要介紹了用Python作圖的一個(gè)簡單實(shí)例,通過turtle模塊實(shí)現(xiàn)作圖,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python字符串切割:str.split()與re.split()的對比分析

    python字符串切割:str.split()與re.split()的對比分析

    今天小編就為大家分享一篇python字符串切割:str.split()與re.split()的對比分析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Django中的用戶身份驗(yàn)證示例詳解

    Django中的用戶身份驗(yàn)證示例詳解

    這篇文章主要給大家介紹了關(guān)于Django中用戶身份驗(yàn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SQL Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 理解生產(chǎn)者消費(fèi)者模型及在Python編程中的運(yùn)用實(shí)例

    理解生產(chǎn)者消費(fèi)者模型及在Python編程中的運(yùn)用實(shí)例

    生產(chǎn)者消費(fèi)者模型一般用于體現(xiàn)程序的多線程并發(fā)性,Python的多線程雖然受到GIL控制,但依然可以構(gòu)建隊(duì)列來簡單體現(xiàn)出模型的思路,這里我們就來共同理解生產(chǎn)者消費(fèi)者模型及在Python編程中的運(yùn)用實(shí)例:
    2016-06-06
  • win7下 python3.6 安裝opencv 和 opencv-contrib-python解決 cv2.xfeatures2d.SIFT_create() 的問題

    win7下 python3.6 安裝opencv 和 opencv-contrib-python解決 cv2.xfeat

    這篇文章主要介紹了win7下 python3.6 安裝opencv 和 opencv-contrib-python解決 cv2.xfeatures2d.SIFT_create() 的問題,需要的朋友可以參考下
    2019-10-10

最新評論

西贡区| 威海市| 明溪县| 安宁市| 灵璧县| 余姚市| 庆安县| 江安县| 河北区| 黄浦区| 横峰县| 保康县| 武山县| 武清区| 长葛市| 自治县| 红桥区| 陆河县| 东宁县| 班玛县| 祁东县| 乌拉特前旗| 驻马店市| 洪雅县| 乐陵市| 竹北市| 玉龙| 永修县| 集安市| 辽宁省| 洱源县| 辽阳县| 墨脱县| 时尚| 柳林县| 葫芦岛市| 肥乡县| 咸宁市| 黄梅县| 陇西县| 准格尔旗|