导读:本篇文章首席CTO笔记来给大家介绍有关django如何做成一个软件的相关内容,希望对大家有所帮助,一起来看看吧。
如何写第一个属于自己的Web页面(Django)
上期(超实用搭建个人开发Web网页的软件及配置基础)已经详细的介绍了基于Django+MySQL+PyCharm组合配置的Web开发的基础架构。这期带读者跟着作者写第一个属于自己的Web页面,同时跟作者同一个局域网的其它用户也可以访问。
首先输入python manage.py startapp myFamilyWeb (表示创建一个自己的Web页面项目),如图1。
生成的myFamilyWeb里的目录结构里的含义如下:
外层的_init_.py文件标识myFamilyWeb是一个Python包。
admin.py 用于将Model定义注册到管理后台,是Django Admin 应用的配置文件。
apps.py用于应用程序本身的配置。
migrations目录用于存储models.py文件中Model的定义及修改。
migrations/_init_.py文件标识migrations是一个Python包。
models.py用于定义应用中所需要的数据表。
tests.py文件用于编写当前应用程序的单元测试。
views.py文件用于编写应用程序的视图。
以上的介绍都是myFamilyWeb应用的全部内容,后续需要做的就是填充对应的service逻辑对外提供服务。如果就这么启动,就会发现如图2一样访问不了。
想要实现访问自己第一个Web页面(myFamilyWeb),第一步是设置路由和在views.py增加一个可以访问的函数(图3-图6)。
配置模板和html(图7-图13)
配置写好了第一个最简单的Web页面,启动服务器。。。(图14)
在开发者电脑上的浏览器访问 (图15)
(配置防火墙端口)(图16)
设置允许多个主机访问 (图17)
在终端输入ipconfig
回车找到IPv4 的地址:192.168.0.102 (图18)
python manage.py runserver 0.0.0.0:8000 (这次启动的时候在后面添加0.0.0.0:8000)。
然后本地网络中的其它计算机就可以在浏览器中访问你的 IP 地址了, (这个网址只能同一个局域网的主机可以访问)
之后就是好好去学习如何写html文件了。。。
如何创建一个Django app
如果你是想创建一个论坛 APP 的话,你可以试试多点社区。简洁实用。
django 一个项目多个App项目搭建
django可以在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户
本次测试以python 2.7
其次分别建立相应的App模块:todo,oa,web
如图所示:
在以上的配置中导入了include对配置进行包装
同时导入了index函数,index在todo,oa,web中的views文件分别建立
同时指定了一个打开的默认首页,即web app下的index /pre
此时运行程序,页面如图所示
如果此时输入的路径为localhost:8000/web/inex,
localhost:8000/oa/inex,
localhost:8000/toto/index将得到不同app的展现,
如何将 django 1.7 程序打包成 exe 程序
python制作exe可执行文件的方法---使用pyinstaller
python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinstaller, 这个工具全平台可用。我曾使用python制作一个工具程序供公司同事使用后,由于公司使用mac linux windows都有很多,就使用过它来将程序做成可执行文件,兼容性好,只是会使得程序在linux平台和mac平台启动较慢(windows还是比较快的),但基本够用。
安装完pyinstaller之后就可以开始了。
1.使用pyinstaller生成可执行文件的方法
1.1 将依赖文件集中到一个文件夹:
pyinstaller -D -w main.py #把main.py替换成你的主入口python文件即可。
-w参数代表main.py是一个窗体程序。
1.2 将所有依赖文件都打包到同一个可执行文件中:
pyinstaller -F -w main.py
2.调查pyinstaller生成程序的加载过程
使用如下命令,可以得到运行时的跟踪,tracing ,loader 的加载过程。
pyinstaller -Fwd aui.py #把aui.py 换成你需要侦测的文件即可。
Django源码阅读 (一) 项目的生成与启动
诚实的说,直到目前为止,我并不欣赏django。在我的认知它并不是多么精巧的设计。只是由功能堆积起来的"成熟方案"。但每一样东西的崛起都是时代的选择。无论你多么不喜欢,但它被需要。希望有一天,python能有更多更丰富的成熟方案,且不再被诟病性能和可维护性。(屁话结束)
取其精华去其糟粕,django的优点是方便,我们这次源码阅读的目的是探究其方便的本质。计划上本次源码阅读不会精细到每一处,而是大体以功能为单位进行解读。
django-admin startproject HelloWorld 即可生成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的类型是 Command django.contrib.staticfiles.management.commands.runserver.Command object at 0x00000101ED5163A0
重点是第二句,让我们跳到 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开发一个简易个人Blog-Python
设计并实现一个基于Python的个人博客系统, 需要完成如下功能
完成个人博客系统的设计和开发
用户可以通过个人博客系统,发布最新的日志
运用所学专业理论及实践,分析解决遇到的问题以提高自己的动手、思考及解决问题的能力
主要模块如下
文章管理模块:主要功能是管理员系统管理员登入后,浏览查看文章,删除不好的文章等功能
标签管理模块:主要功能是管理员系统管理员登入后,浏览查看相册,删除相册等功能
文章、标签浏览模块:主要功能是游客进入系统后。可以浏览文章列表,可以按标签查看文章
评论系统模块, 游客可以发表查看别人的评论
安装与使用
项目采用Django框架进行开发, Django是一个用于快速web开发的优异方案(几乎没有之一), 获取源码后可以按照如下方式来运行代码
新建mysql数据库, 将数据库sql文件导入
修改源码包中的 csworkblog/settings.py 文件, 将DATABASES这个变量里的内容改一下, 这个就是你本地的数据库url和用户名密码, 其中NAME为你的database名称
进入源码包, 打开cmd, 运行命令 python manager.py runserver 就能启动服务, 端口为8000
为后台管理界面, 管理员用户名密码为 admin 123456, 可以进行文章管理标签管理评论管理
界面还是比较好看的, 项目截图源码下载地址 cs-work.com/p/21031
结语:以上就是首席CTO笔记为大家介绍的关于django如何做成一个软件的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。