创建一个django项目:django-admin startproject projectname
projectname/ 工程名
manage.py 一个让你用各种方式管理Django项目的命令行工具
projectname/ 工程名--一个纯python包 整个工程的配置相关内容的设置地方
__init__.py 一个python包的__init__.py初始化文件
settings.py Django项目的配置文件
urls.py Django项目的URL声明,就像你网站的"目录",其中管理着各个应用中的url跳转。
asgi.py An entry-point for ASGI-compatible web servers to server your project
wsgi.py 作为你得项目运行在WSGI兼容的Web服务器上的入口
在Django中,每一个应用都是一个Python包,并且遵循着相同的约定。Django自带 startapp这个命令工具帮助你生成应用的基本目录结构。
from django.urls import include, path
urlpatterns = [
path('app/', include('app.urls')),
path('admin/', admin.site.urls),
]
函数include()允许引用其他的URLConfs。每当Django遇到include()时,它会截断与此项匹配的URL的部分,并将剩余的字符串发送到URLconf以供进一步处理。 include()的理念是使其可以即插即用。
注意:当包含其他的URL模式时你应该总是使用include(), admin.site.urls是唯一例外。
函数path()具有四个参数,两个必须参数:route和view,两个可选参数:kwargs和name。
route:是一个匹配URL的准则。这个规则不会匹配GET和POST参数和域名。
view:当Django找到了一个匹配的准则就会调用这个特定的视图函数,并传入一个HttpRequest对象作为第一个参数,被捕获的参数以关键字参数的形式传入。
kwargs:任意个关键字参数可以作为一个字典传递给目标视图函数。
name:为你的URL取名能使你在Django的任意地方唯一的引用它,尤其是在模板中。
模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为。Django遵循DRY Principle,它的目标是你只需要定义数据模型,而其他的杂七杂八代码你都不用关心,它们会自动从模型生成。
Django应用是可插拔的,你可以在多个项目中使用同一个应用。
为了是工程能够使用一个应用,需要在配置类INSTALLED_APPS中添加设置。'app.apps.appConfig'
python manage.py makemigrations {apps}
通过运行makemigrations命令,Django会检测你对模型文件的修改,并且把修改的部分储存为一次迁移。
python manage.py migrate 自动执行数据库迁移并同步管理你得数据库结构。迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库的结构而不需要重新删除和创建表,它专注于使数据库平滑升级而不会丢失数据。
python manage.py sqlmigrate {app} migrations下的迁移 0001
该命令接收一个迁移的名称,然后返回对应的SQL。
数据库的表明是由应用名和模型名的小写形式连接而来。
主键ID会被自动创建。
默认的,Django会在外键段名后追加字符串"_id".
migrations迁移命令生成的SQL语句内容是根据不同数据库进行定制生成的,Django自动处理不同类型数据库生成的SQL语句的差别定制。
python manage.py check 可以帮助你检查项目中的问题,检查过程不会对数据库进行任何操作。
改变模型的三个步骤:
· 编辑models.py文件,改变模型
· 运行 python manage.py makemigrations {app}为模型的改变生成迁移文件
· 运行 python manage.py migrate来应用数据库迁移。
admin.site.register(models) 在每个应用的admin.py中添加对模型的注册能够在管理界面对不同应用下的模型进行管理。Django提供的站点管理功能能方便你对不同应用中模型数据的增删改查等操作。
Django中的视图的概念是一类具有相同功能和模板的网页的集合。
为了将URL和视图关联起来,Django使用了'URLconfs'来配置。URLconf将URL模式映射到视图。
当有网络请求时,Django将会根据settings.py文件中ROOT_URLCONF选项配置的值载入urls模块(一般是项目的urls.py文件)。然后Django会寻找名为urlpatterns的变量并按照顺序匹配正则表达式找到对应的视图。
使用<>(尖括号)捕获的url值会以关键字参数的形式发送给视图函数。<变量类型:变量名>。
每个视图必须要做的只有两件事:返回一个HttpResponse对象或者抛出一个异常(比如Http404)。
项目setting.py文件中TEMPLATES配置项描述了Django如何载入和渲染模板。默认的设置文件设置了DjangoTemplates后端,并将APP_DIRS设置成了True。这个选项将会让DjangoTemplates在每个INSTALLED_APP文件夹中寻找"templates"子目录。
Django通过在根URLconf中添加命名空间,在每个应用的url.py加上app_name设置命名空间,以及每个url中设置name来确定{% url %} 标签对应哪个应用的哪个url (例如:{% url 'polls:detail' 参数 %})
django.contrib.staticfiles将各个应用的静态文件统一收集起来,这样一来,在生产环境中,这些文件就会集中在一个便于分发的地方。
Django的STATICFILES_FINDERS设置包含了一系列的查找器,它们知道去哪里找到static文件。AppDirectoriesFinder是默认查找器中的一个,它会在每个INSTALLED_APP中指定的应用的目录中找名称为static的特定文件夹。
{% static %} 模板标签会生成静态文件的绝对路径。
自定义后台表单:你可以创建一个模型后台类(admin.ModelAdmin),将其作为第二个参数传给admin.site.register()来自己定义表单行为。
setting.py 中配置项TEMPLATES内选项DIRS是一个包含多个系统目录的文件列表,用于在载入Django模板时实用,是一个待搜索路径。
打包python程序由很多工具可以完成,我们可以使用setuptools来打包我们的程序。
pip install setuptools
1、创建一个盛放应用的文件夹,将应用拷贝进来。
2、创建一个名为README.rst的文件,该文件是对项目的描述
3、创建一个LICENSE文件,项目授权协议文件
4、创建setup.cfg 和setup.py文件用来创建和安装应用。setup.py中主要是应用的描述配置信息。setup.py文件使用setuptools包的setup方法进行应用安装。
5、可以创建一个docs目录来存放应用的详细文档。docs目录为空时不会被加入到应用包中
6、默认包中只包含 Python 模块和包。为了包含额外文件,我们需要创建一个名为MANIFEST.in的文件。
django-polls/MANIFEST.in 文件内容 例子
include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *
recursive-include docs *
7、通过python setup.py sdist命令构建应用包。
python -m pip install --user django-polls/dist/django-polls-0.1.tar.gz
通过该命令包会被作为用户库被安装
python -m pip uninstall django-polls 通过pip卸载包
网友评论