皮皮网

【源码语言修改病句】【ithub源码共享】【类似aspack源码】django建站源码_django网站源码

时间:2024-11-26 18:44:55 分类:热点 来源:赶集网 源码

1.如何新建django项目(djangoadminstartproject创建)

django建站源码_django网站源码

如何新建django项目(djangoadminstartproject创建)

       导读:本篇文章首席CTO笔记来给大家介绍有关如何新建django项目的建站相关内容,希望对大家有所帮助,源码源码一起来看看吧。网站

pycharm怎么建django

       打开PyCharm官网,建站选择Download,源码源码进入下载页面。网站源码语言修改病句

       这时会出现2个版本,建站左边的源码源码那个是购买版,可以试用天;右边那个是网站社区版,免费的建站,我们一般选择右边社区版。源码源码

       下载完后进行安装,网站一直选择下一步就可以了,建站我就不详细介绍了。源码源码安装完后运行PyCharm,网站新建项目。ithub源码共享此时建的项目并不是Django项目,这个还需要我们自己设置。

       安装Django,使用命令安装,我这里是用的cmder,非常好用的控制台命令窗口,替代了cmd。进入到Python的目录下,使用命令pipinstallDjango==1.8.3,执行完就OK了。

       新建Django项目,我这里是使用命令创建项目的。

       django-adminstartprojectHelloDjango创建HelloDjango项目

       然后进入到HelloDjango项目根目录下,运行命令创建hello模块

       pythonmanage.pystartapphello

       此时PyCharm中就有一个HelloDjango项目了。

       现在我们来搭建一个简单的类似aspack源码web服务。

       修改views.py文件

       修改urls.py文件

       两个文件修改完后,就可以启动项目了,执行命令

       pythonmanage.pymigrate

       pythonmanage.pyrunserver

       此时项目已经启动起来了,它会告诉我们访问地址,按照地址进行访问就OK了。

       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.Commandobjectat0xEDA0

       重点是第二句,让我们跳到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入口,即可经过中间件到达路由进行分发。

社区版pycharm创建django项目的一些问题

       1.cannotimportview

       解决:项目名称——右键——设为Sourcesroot

       2.cannotfindtemplates

       解决:在setting.py里把空的'DIRS’改成

       'DIRS':[os.path.join(BASE_DIR,'templates')],

       3.pagenotfound

       老师课上url路径设置为path(r'^app/',include('app.urls')),当只有一个项目时可以运行,然而多项目时报错,此时需要把^都去掉。

       4.社区版在tools里找不到runmanage.pytask

       解决:运行项目,会报错,此处错误原因是Django项目版本与mysql驱动版本不匹配的问题,点链接进去把版本的两行注释掉,然后在settings.py里把项目名称加进去,运行pythonmanage.pymakemigrations以及pythonmanage.pymigrate

       5.社区版连接mysql出现报错:Theservertimezonevalue'?ú±ê×±'isunrecognizedorrepresentsmorethanonetimezone.YoumustconfigureeithertheserverorJDBCdriver(viatheserverTimezoneconfigurationproperty)touseamorespecifctimezonevalueifyouwanttoutilizetimezonesupport.

       解决:

       6.双击表单选择nofilter就看到表单内容了。

       结语:以上就是首席CTO笔记为大家整理的关于如何新建django项目的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于如何新建django项目的相关内容别忘了在本站进行查找喔。

copyright © 2016 powered by 皮皮网   sitemap