自学django怎么找项目?

兄弟姐妹哪位知道,自学django怎么找项目?
最新回答
吹梦到西洲

2024-11-02 01:18:27

导读:很多朋友问到关于自学django怎么找项目的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

去哪里找python的开源项目

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。在GitHub,用户可以十分轻易地找到海量的开源代码。

下面给大家介绍一些GitHub上25个开源项目:

(1)TensorFlowModels

如果你对机器学习和深度学习感兴趣,一定听说过TensorFlow。TensorFlowModels是一个开源存储库,可以找到许多与深度学习相关的库和模型。

(GitHub:)

(2)Keras

Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。旨在完成深度学习的快速开发(GitHub:)

(3)Flask

Flask是一个微型的Python开发的Web框架,基于Werkzeug?WSGI工具箱和Jinja2模板引擎,使用BSD授权。

(GitHub:)

(4)scikit-learn

scikit-learn是一个用于机器学习的Python模块,基于NumPy、SciPy和matplotlib构建。,并遵循BSD许可协议。

(GitHub:)

(5)Zulip

Zulip是一款功能强大的开源群聊应用程序,它结合了实时聊天的即时性和线程对话的生产力优势。Zulip作为一个开源项目,被许多世界500强企业,大型组织以及其他需要实时聊天系统的用户选择使用,该系统允许用户每天轻松处理数百或数千条消息。Zulip拥有超过300名贡献者,每月合并超过500次提交,也是规模最大,发展最快的开源群聊项目。

(GitHub:)

相关推荐:《Python入门教程》

(6)Django

Django是Python编程语言驱动的一个开源模型-视图-控制器(MVC)风格的Web应用程序框架,旨在快速开发出清晰,实用的设计。使用Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。

(GitHub:)

(7)Rebound

Rebound是一个当你得到编译错误时即时获取StackOverflow结果的命令行工具。就用rebound命令执行你的文件。这对程序员来说方便了不少。

(GitHub:)

(8)GoogleImagesDownload

这是一个命令行python程序,用于搜索GoogleImages上的关键字/关键短语,并可选择将图像下载到您的计算机。你也可以从另一个python文件调用此脚本。

(GitHub:)

(9)YouTube-dl

youtube-dl是基于Python的命令行媒体文件下载工具,完全开源免费跨平台。用户只需使用简单命令并提供在线视频的网页地址即可让程序自动进行嗅探、下载、合并、命名和清理,最终得到已经命名的完整视频文件。

(GitHub:https://github.com/rg3/youtube-dl)

(10)SystemDesignPrimer

此repo是一个系统的资源集合,可帮助你了解如何大规模构建系统。

(GitHub:)

(11)MaskR-CNN

MaskR-CNN用于对象检测和分割。这是对Python3,Keras和TensorFlow的MaskR-CNN实现。该模型为图像中对象的每个实例生成边界框和分割蒙版。它基于特FeaturePyramidNetwork(FPN)和ResNet101backbone。

(GitHub:)

(12)FaceRecognition

FaceRecognition是一个基于Python的人脸识别库,使用十分简便。这还提供了一个简单的face_recognition命令行工具,可以让您从命令行对图像文件夹进行人脸识别!

(GitHub:)

(13)snallygaster

用于扫描HTTP服务器上的机密文件的工具。

(GitHub:)

(14)Ansible

Ansible是一个极其简单的IT自动化系统。它可用于配置管理,应用程序部署,云配置,支持远程任务执行和多节点发布-包括通过负载平衡器轻松实现零停机滚动更新等操作。

(GitHub:)

(15)Detectron

Detectron是FacebookAI研究院开源的的软件系统,它实现了最先进的目标检测算法,包括MaskR-CNN。它是用Python编写的,由Caffe2深度学习框架提供支持。

(16)asciinema

终端会话记录器和asciinema.org的最佳搭档。

(GitHub:)

(17)HTTPie

HTTPie是一个开源的命令行的HTTP工具包,其目标是使与Web服务的CLI交互尽可能人性化。它提供了一个简单的http命令,允许使用简单自然的语法发送任意HTTP请求,并显示彩色输出。HTTPie可用于测试,调试以及通常与HTTP服务器交互。

(GitHub:)

(18)You-Get

You-Get是一个小型命令行实用程序,用于从Web下载媒体内容(视频,音频,图像),支持国内外常用的视频网站。

(GitHub:)

(19)Sentry

Sentry从根本上讲是一项服务,可以帮助用户实时监控和修复崩溃。基于Django构建,它包含一个完整的API,用于从任何语言、任何应用程序中发送事件。

(GitHub:)

(20)Tornado

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,,最初是由FriendFeed上开发的。通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接,是longpolling、WebSockets和其他需要为用户维护长连接应用的理想选择。

(GitHub:)

(21)Magenta

Magenta是一个探索机器学习在创造艺术和音乐过程中的作用的研究项目。这主要涉及开发新的深度学习和强化学习算法,用于生成歌曲,图像,绘图等。但它也是构建智能工具和界面的探索,它允许艺术家和音乐家使用这些模型。

(GitHub:)

(22)ZeroNet

ZeroNet是一个利用比特币的加密算法和BitTorrent技术提供的不受审查的网络,完全开源。

(GitHub:)

(23)Gym

OpenAIGym是一个用于开发和比较强化学习算法的工具包。这是Gym的开源库,可让让你访问标准化的环境。

(GitHub:)

(24)Pandas

Pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。此外,它还有更广泛的目标,即成为所有语言中最强大,最灵活的开源数据分析/操作工具。它目前已经朝着这个目标迈进。

(GitHub:)

(25)Luigi

Luigi是一个Python模块,可以帮你构建复杂的批量作业管道。处理依赖决议、工作流管理、可视化展示等等,内建Hadoop支持。(GitHub:)

Django源码阅读(一)项目的生成与启动

诚实的说,直到目前为止,我并不欣赏django。在我的认知它并不是多么精巧的设计。只是由功能堆积起来的"成熟方案"。但每一样东西的崛起都是时代的选择。无论你多么不喜欢,但它被需要。希望有一天,python能有更多更丰富的成熟方案,且不再被诟病性能和可维护性。(屁话结束)

取其精华去其糟粕,django的优点是方便,我们这次源码阅读的目的是探究其方便的本质。计划上本次源码阅读不会精细到每一处,而是大体以功能为单位进行解读。

django-adminstartprojectHelloWorld即可生成django项目,命令行是exe格式的。

manage.py把参数交给命令行解析。

execute_from_command_line()通过命令行参数,创建一个管理类。然后运行他的execute()。

如果设置了reload,将会在启动前先check_errors。

check_errors()是个闭包,所以上文结尾是(django.setup)()。

直接看最后一句settings.INSTALLED_APPS。从settings中抓取app

注意,这个settings还不是我们项目中的settings.py。而是一个对象,位于django\conf\__init__.py

这是个Settings类的懒加载封装类,直到__getattr__取值时才开始初始化。然后从Settings类的实例中取值。且会讲该值赋值到自己的__dict__上(下次会直接在自己身上找到,因为__getattr__优先级较低)

为了方便debug,我们直接写个run.py。不用命令行的方式。

项目下建个run.py,模拟runserver命令

debug抓一下setting_module

回到setup()中的最后一句apps.populate(settings.INSTALLED_APPS)

开始看apps.populate()

首先看这段

这些App最后都会封装成为AppConfig。且会装载到self.app_configs字典中

随后,分别调用每个appConfig的import_models()和ready()方法。

App的装载部分大体如此

为了方便debug我们改写下最后一句

res的类型是Commanddjango.contrib.staticfiles.management.commands.runserver.Commandobjectat0x00000101ED5163A0

重点是第二句,让我们跳到run_from_argv()方法,这里对参数进行了若干处理。

用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。

这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。

django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。

第一次启动时,DJANGO_AUTORELOAD_ENV为None,无法进入启动逻辑。会进入restart_with_reloader()。

在这里会将DJANGO_AUTORELOAD_ENV置为True,随后重启。

第二次时,可以进入启动逻辑了。

这里创建了一个django主线程,将inner_run()传入。

随后本线程通过reloader.run(django_main_thread),创建一个轮询守护进程。

我们接下来看django的主线程inner_run()。

当我们看到wsgi时,django负责的启动逻辑,就此结束了。接下来的工作交由wsgi服务器了

这相当于我们之前在fastapi中说到的,将fastapi的app交由asgi服务器。(asgi也是django提出来的,两者本质同源)

那么这个wsgi是从哪来的?让我们来稍微回溯下

这个settings是一个对象,在之前的操作中已经从settings.py配置文件中获得了自身的属性。所以我们只需要去settings.py配置文件中寻找。

我们来寻找这个get_wsgi_application()。

它会再次调用setup(),重要的是,返回一个WSGIHandler类的实例。

这就是wsgiapp本身。

load_middleware()为构建中间件堆栈,这也是wsgiapp获取setting信息的唯一途径。导入settings.py,生成中间件堆栈。

如果看过我之前那篇fastapi源码的,应该对中间件堆栈不陌生。

app入口→中间件堆栈→路由→路由节点→endpoint

所以,wsgiapp就此构建完毕,服务器传入请求至app入口,即可经过中间件到达路由进行分发。

django创建项目

将django-admin所在的文件夹bin放到path里

确保.py文件是用pythonconsole打开

Django新手教程6,新建一个项目

感觉再不按套路出牌就要被群众围殴了,那咱么就开始吧。

打开CMD黑窗口,我们输入

workondjango_env

我们先看看怎么在黑窗口里面穿梭于各个URL之间,你先看你现在所处的位置,一般来说,新打开的CMD,都是处于

C:/User/your_name

这个位置,我们先到D盘,根目录从C到D,我们只需要输入

D:

就可以到达D盘了,如果你的django_env是激活的那么,他会自动跳转到

D:/py_env/django_env

这个目录下,我们当然可以把项目就建在这里,但也可以建在别的地方。所以请输入(注意cd和两点之间有一个空格)

cd..

cd是前往的意思,两个小点指的是父亲,意思是前往当前目录的父目录,

于是,我们来到

D:/py_env

目录下,再次输入

cd..

于是我们达到

D:/

这已经是D盘的根目录的再输入cd..已经没有什么效果了。如果你之前按照我的教程一步一步来,那么,你已经在在这个根目录上建好了一个叫django_project的空文件夹,如果你没有建好,那么请输入

mkdirdjango_project

创建一个这个文件夹,当然,你也可以在图形界面,打开我的计算机,然后到达位置右键新建文件夹。这里为了逼格和更加熟悉cmd窗口起见,我建议你还是用命令行。

我们cmd的路径(准确的说是工作路径)现在在D盘的根目录,

因此,请输入

cddjango_project

表示前往django_project,当然,这个时候你得确定django_project是D盘根目录下的一个子目录。

如果,我们还处于

D:py_env/django_env

那么输入

cddjango_project是无效的,你得按照我们刚才一步一步抵达D盘,然后在进入到django_project。或者,你可以直接输入绝对路径

cdD:/django_project

使用上面的命令,只要你处于D盘,无论是在哪一级的目录,都可以一步到位。

抵达现场,我们马上就要新建我们的项目了。

激动人心的一刻到了,请在CMD中输入

django-adminstartprojectmysite

这时,我们创建了一个项目,这个项目的名字叫mysite,等等,说好的做云盘,为毛名字不是mycloud呢?这就要提到django的精妙之处了,新建了一个项目,就相当于,我们在计算机上圈了一块地(D:/django_project/mysite目录以后就是我们网络服务这一块的地盘了),还没开始建展馆,为什么先圈地而不是直接新建一个展馆呢,因为我们圈了地就可以在地上建很多展馆啊,在django看来,云盘啥的,够不上称为一个项目,只能称之为应用(一座展馆),只有将很多展馆放在一起,才能称之为项目,也就是说,一个项目可以包含很多的应用(APP),比如我们的网站可以提供云盘服务,我们也可以,提供个人博客服务,我们还可以开一个讨论某植物的论坛啥的,反正就是为了将来能够提供全家桶服务,所以,云盘只能算做是一个APP。当然,目前我们只这块地上建一座提供云服务的展馆。其他的展馆以后再说。

还是在cmd黑窗口,请输入

dir

用这条指令可以列出当前目录下的子目录和存放文件的情况,

我们可以看到,生成一个叫mysite的子目录,实际上,在mysite的上面还有两个目录,一个目录是一个点,表示自己,也就是django_project本身,另一个目录是两个点,表示父目录,也就是D盘根目录。所以我们看到的是django_project目录的一家三代。

这和图形界面基本是统一的,下图的左上角圈的地方表示的就是父目录,至于本身目录嘛,就没必要刻意用什么图形表示了。

你用鼠标点击某个文件夹,实际上系统内部就是帮你运行了一下

cd你点击的文件夹

你点击后退,则帮你运行

cd..

回到正题,我们看到了一个mysite子目录,所以进去看看,请输入

cdmysite

然后输入

dir

查看情况

发现又有一个mysite目录,坑爹啊,俄罗斯套娃呢这是!

这一看就知道django是外国人搞得工具,子目录跟父目录叫同一个名字(好歹给子一级的目录起个名字叫mysite二世啥的行不。没办法,django设计者这么叫了,我们也不能随便乱改,以后我们把里面的那个mysite叫做子mysite,外面的那个叫父mysite以区分),仔细一看,旁边还有一个manage.py,先不不管这个,再进去子mysite看一下,还好,再没有mysite目录了,里面是

里面有4个py文件,看到没有,其中有一个是urls.py,URL之重要,需要专门一个文件来管理,如果你之前有认真看文章的话应该就能差不多猜到它是起什么作用的文件了。除了urls.py,settings.py也是非常重要的,都是用来管理mysite这个项目的,所以,我觉得最后这个mysite文件夹应该叫做mysite_manage因为它里面的东西,和它旁边的manage.py一样都是用来管理项目的。

为了让大家对项目结构有更清楚认识,我找了django官网上的图片

Django创建项目

在Run、Runconfiguration中,进入PyDevDjango,选择你的项目,在右边“MainModule”里,用${workspace_loc:项目名/manage.py}即:工作目录下的,项目名称目录下的,manage.py。也可以直接指向物理路径。在Arguments参数选项里,可以加上:runserver0.0.0.0:8000,让它用8000端口来测试。

结语:以上就是首席CTO笔记为大家整理的关于自学django怎么找项目的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~