简介:今天,首席CTO笔记将与您分享如何使用Django项目的源代码。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
Django是一个具有开源代码的Web应用程序框架,由Python编写。MTV框架模式,模型M,视图V和模板T.IT最初是开发和使用的
Lawrence Publishing Group拥有的一些基于新闻的网站是CMS(内容管理系统)软件。
该框架以比利时吉普爵士吉他手Django Reinhardt的名字命名。
推荐“ Python教程”
框架简介
Django项目是一个Python自定义框架,该框架源自2005年以开源形式发布的在线新闻网站。DjangoFramework的核心组件是:
创建模型的对象关系映射
为最终用户设计的完美管理界面
第一类URL设计
设计师友好的模板语言
缓存系统。
django(发音:[``d ??? f ??])是用Python语言编写的开源Web开发框架(开源Web框架),它鼓励快速开发并遵循MVC设置
Count.Django符合BSD版权。它于2005年7月首次发行,并于2008年9月发布了首个正式版本1.0。
Django以比利时爵士音乐家Django Reinhardt的名字命名。他是吉普赛人,主要是玩吉夫拉(Geefra),也打小提琴。
由于近年来Django的快速发展,其应用已越来越广泛地使用。它已被著名的IT开发杂志SD Times选为2013 SD Times 100,排名为“ API,图书馆和框架”。
第六类被认为是该领域的领导者。
设计理念
Django的主要目的是简单,快速开发数据库驱动的网站。它强调了代码重复使用,并且多个组件可以轻松地以“插件-in”的形式为整个框架提供服务。
Django有许多功能强大的第三方插头 - 您甚至可以轻松地开发自己的工具包。这使Django强大可扩展性。它还强调了快速打开
头发和干燥的原理(不要重复自己)。
?一切都从这里开始,首先注意
尖端:
?形式组件验证数据:对从上到下进行值验证;
通过clenet_data进行验证;
将验证的故障放在错误中;
tofault必须通过表单中的所有字段(必需= true);
?检查数据时,您可以传递更多数据。多通行数据将不会进行任何验证,也不会影响形式验证规则
?验证形式action =“” method =“ post” novalidate的前端取消
首先,IS_VALID()是验证数据的一部分。将数据放入IS_VALID()中开始验证。换句话说,他通过周期的每个字段进行了验证,而Clenet_data和错误本质上是两个字典来存储正确的数据和错误数据。
摘要:学习形式组件的核心方法是is_valid(),最重要的源代码is_valid(),钩函数也位于is_valid()中。
详细说明:首先,基础是铺设的,真实和真实的返回,真实和错误的背部为false。错误是一个空词典或钥匙值,然后不为空是真实的。如果错误中有错误键值,请返回false。
详细说明:获取两个初始变量。从逻辑上讲,以下是当前表格类中的所有字段。确定输入值和字段规则是否在线。输入错误字典。
?提示:当您看到源代码时,您需要知道您应该看到的内容,看不到一切,只需查看我们当前逻辑关心的地方
详细说明:
1. Self.Fields在实例化分类后完成任务。self.fields = {“ name”:名称字段对象,“密码”:密码字段对象,“电子邮件”:电子邮件字段对象},因此名称对应于字段字符,字段对应于字段对象(也对应于字段对象(也对应于规则对象),[例如,以下是名称:“名称”字段:名称或名称:“密码”归档:密码]。
2.请参阅价值下降。该值是指通过中字典的值(例如,此处是指字典中名称的值wpr)。
3.接下来是ISInstance(字段,FileField),它指的是字段对象是否为文件类型。在这里,这三个属性是查菲尔德,查菲尔德,电子邮件菲尔德,没有文件类型,因此请占据value = filean(valueto。
4.然后分析值= field.clean(value)是指使用字段对象验证该值值,然后将其重新分配给值。String,值是此通行证的值,但是如果清洁在这里未批准,将抛出有效性的值。由于清洁是用C语言封装的,因此您不会深处。
5.下一个句子如果hasattr(seld,'clean_%s'%name):??是传递第一层的第二层之后的第二层挂钩函数的验证,以确定当前中是否有名称class.clean_%s'%名称是方法,如果是的话,请采用此方法并添加括号以调用此方法。目前,请致电第二层挂钩方法以获取返回值(???敲黑板!请注意,为什么这就是为什么它在黑板中的这个地方!为什么应返回挂钩函数的原因,但是如果它返回未编写,不会报告错误。这是因为他已经通过了第一个验证级别。名称已存储在Clenet_data中,因此有时可以不添加它,但是为了防止版本从版本,可以防止版本中的版本。问题生成的不必要的错误,或者返回值仍然写入,严格!!!)
?敲门黑板:第一层传递以传递钩函数。如果第一层未传递,则钩子无用!
6.无论您不执行第一个或第二个验证,都会抛出一个异常,除了verialationError为e:self.add_error(name,e),并将键和错误信息放入错误中。
7.但是目前有一个问题。从逻辑上讲,如果传递第一层,Clenet_data已经具有正确的键值,则如果未传递第二层,则CLENET_DATA不应具有此键值,那么键是LEESIN this Add_error()。
8.然后让我们输入add_error()查看确切的内容:
9.从总体角度来看,它由尝试控制除外。如果您正确地将其放入Clenet_data中,如果您错了,请将其放入错误。
10.最后,只要错误字典中有一个键值,它就会返回false。
?PS:字段对象可以理解为字段规则/规则;
词典是无序(.ITEMS)的,但是在最新版本中,词典已经有序了。有一个有序的模块。该词典确保我们的关键值有序。第一个关键值是我们将来使用它时的第一个关键值,这确保我们在检查时以有序的方式以有序的方式。首先检查第一个字段,然后按顺序检查。按顺序,我不知道我循环何时检查哪一个;
老实说,直到到目前为止,我都不欣赏django。这不是我的认知中的微妙设计。这只是功能所积累的“成熟解决方案”。但是,一切的兴起都是时代的选择。您不喜欢它,但需要它。希望有一天,Python可以拥有越来越丰富的成熟解决方案,并且不再因性能和维护而受到批评。(Fit End)
将其本质带到滴度上,Django的优势很方便。我们的源代码阅读的目的是探索其便利性的本质。阅读源代码的计划对每个地方都不好,而是解释功能的功能。
django-admin startproject helloworld可以生成django项目。命令行是EXE格式。
manage.py将参数交给了命令行。
execute_from_command_line()通过命令行参数创建管理类。然后运行他的execute()。
如果设置了重新加载,请在启动之前检查_errors。
check_errs()是一个关闭,因此在上一篇文章的末尾是(django.setup)()。
查看最后一个句子设置.installed_apps.grab从设置
请注意,此设置不是我们项目中的设置。
这是设置类的懒负载包装包装,直到__getAttr __。然后从设置类的实例中获取值,然后说将其分配给您自己的__ -dict__(我会直接找到它下次我自己,因为__getAttr __优先级)
为了促进调试,我们直接编写一个run.py。
在项目下创建一个run.py,以模拟运行服务器命令
调试抓取设置_MODULE
回到setup()中的最后一句话
开始观看apps.populate()
首先查看本段
这些应用最终被封装在appconfig中。
随后,调用了每个AppConfig的import_models()和ready()方法。
应用程序的加载部分通常是这样的
为了促进调试,我们重写了最后一句话
RES的类型是命令django.contrib.staticfiles.management.commands.runserver.com和object at 0x00000101ED5163A0
重点是第二个句子,让我们跳到run_from_argv()方法,这是几个处理参数。
用Pycharm指向手柄将进入基类,该基类无法获得正确的方向。实际上,子类已重写此方法。
这里有两种情况。如果加载重新加载,它将直接执行inner_run(),并且项目首先从其他逻辑开始。
当Django项目启动时,它实际上将启动两次。如果我们在项目入口(manage.py)中设置一个贴心,您会发现它将打印两次。
在第一个启动开始时,django_autoreload_env却没有,无法输入启动逻辑。将输入crandt_with_reloader()。
在这里,您将将django_autoreload_env放置为true,然后重新启动。
第二次,您可以输入启动逻辑。
在此创建一个Django主线程以传递innit_run()。
随后,此线程创建了一个旋转式,通过reloader.run(django_main_thread)询问监护过程。
让我们看一下django innion_run()的主线程。
当我们看到WSGI时,Django的启动逻辑已经结束。下一个作业已移交给WSGI服务器
这相当于我们之前在Fastapi中所说的话,然后将Fastapi的应用程序交给ASGI服务器(ASGI也是Django提出的,这两个基本上是同源的)
那么WSGI来自哪里?让我们回头回去
此设置是一个对象,它已从以前的操作中从settings.py配置文件中获取了自己的属性。因此,我们只需要转到settings.py配置文件即可找到。
让我们找到此get_wsgi_application()。
它将再次调用setup(),返回WSGIHANDLER类的实例很重要。
这是WSGIAPP本身。
load_middleware()是WSGIAPP构建中间件堆栈的唯一方法。
如果您之前阅读了FastAPI源代码,则应该对中间件堆栈不陌生。
应用程序入口→中间件堆栈→路由→路由节点→端点
因此,WSGIAPP已完成此操作,并将服务器传递到应用程序入口的请求中,并且可以通过中间件与该路由分配。
设计和实施基于Python的个人博客系统,您需要完成以下功能
完成个人博客系统的设计和开发
用户可以通过个人博客系统发布最新日志
使用您学会的理论和实践来分析遇到的问题,以提高您的做法,思考和解决问题
主要模块如下
文章管理模块:主要功能是登录到管理员系统管理员,删除不良文章和其他功能后浏览文章
标签管理模块:主要功能是在登录到管理员系统管理员后浏览专辑,删除相册和其他功能
文章,标签浏览模块:主要功能是在游客进入系统之后。您可以浏览文章列表,您可以根据标签查看文章
评论系统模块,游客可以发表其他人的评论
安装和使用
该项目是由Django框架开发的。Django是快速网络开发(几乎没有人)的绝佳解决方案。获得源代码后
创建一个新的MySQL数据库,以将数据库SQL文件导入到
在源代码软件包中修改csworkblog/settings.py文件,更改数据库变量中的内容。这是您本地数据库URL和用户名密码。其中,名称是您的数据库名称。
输入源代码软件包,打开CMD,运行命令python manager.py runserver启动服务,端口为8000
对于背景管理接口,管理员的用户名密码为管理员123456,可以通过文章管理标签管理评论管理管理
接口仍然更好,项目屏幕截图源代码下载地址CS- work.com/p/21031
1.选择正确的echarts.js,然后在echarts.baidu.com上选择源代码版本以避免问题。
2.在项目的主要目录中创建一个新的静态文件夹,并设置JS,CSS和Images文件夹
3.在设置文件中添加以下代码配置:
复制代码
static_url ='/static/'
static_root = os.path.join(base_dir,'static')
staticfiles_dirs =(
('css',os.path.join(static_root,'css')。替换('\','/'),),
('js',os.path.join(static_root,'js')。替换('\','/'),),
('images',os.path.join(static_root,'images')。替换('\','/')),
治愈
复制代码
4.在HTML页面上介绍本地JS文件静态/js/echarts.js
脚本type =“ text/javascript” src =“ https://www.shouxicto.com/stative/js/echarts.js"/script
5.启动Python Django服务器
python3 manage.py runserver
6.刷新页面,好的
成功将网络echarts.js文件更改为引用的本地echarts.js文件
WebService实际上是Web API,但是为了促进使用通用数据格式,例如XML。因此,您可以使用第三方应用程序(例如第三 - 方XML库)自己构建此类环境,或使用第三派对应用,例如Djangorestframework
结论:以上是首席CTO注释为每个人编写的Django项目源代码的所有内容。感谢您花时间阅读此网站。我希望它对您有所帮助。