创建一个投票的应用app。现在已经创建好了一个项目,就是有了一个框架,有了框架之后就可以往框架里面填写一些自己的需求,就是放一些功能在里面即可。一个项目可以包含多个应用app,一个应用app可以属于多个项目。每一个应用就是该项目的一个功能。

现在在该项目里面创建第一个投票的应用程序:在命令行输入创建应用程序的命令------>polls为应用的名称

$ python manage.py startapp polls

现在就创建好了一个名叫polls的应用程序,当创建好一个app时框架会给我们创建一个app的目录,该目录结构为:

polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py

对app目录结构的说明理解:

polls:应用程序app的名字。

__init__.py:告诉python这是一个python包。

admin.py:app的后台管理工具。

apps.py:应用文件。

models.py:模型文件。

tests.py:测试文件。

views.py:视图文件。

*migrations.py:这是比较重要的文件,用来迁移数据的。就是每写一个model,就需要迁移数据,这样才能在数据库里面生成对应的表。

*特别说明(再一次说明):makemigrations是生成迁移文件。migrate是执行迁移文件(最终在数据库里面生成表)。

现在已经在该项目里面创建好一个app了,那么接下来就是给这个app添加功能了~~~~~~~~~~~~~~~~~~~~~~~

首先写一个视图,打开views.py在里面添加该视图的功能代码:

from django.http import HttpResponse

def index(request):
return HttpResponse("Hello, world. You're at the polls index.")

说明:这表示创建了一个叫index的函数(视图);这个视图的作用是向请求者返回’  Hello, world. You're at the polls index.’这一段字符串。现在写好了这个最简单的视图,如何调用这个视图呢?django是如何知道我们要返回这个视图呢?什么时候要返回这个视图呢?   这时就表现出django的路由系统的强大的了。此时我i们需要将这个视图映射到一个url。我们需要在这个应用app里面创建一个路由URLconf,该路由的文件名称为urls.py。此时的app的目录结构就多了一个urls.py的文件:

polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py

此时就有了该app的路由系统了,打开该文件,进行配置:

from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]

这个格式是固定的,只需要改path函数里面的内容就可以了。这是app路由系统的配置;说明:就是说路由到这一步了,然后就返回index视图就可以了。

现在关于应用程序app的配置完成了,那么现在配置根url配置完成,也就是配置 项目的url。白话理解:就是框架接收到客户端的请求,然后框架首先匹配根的url,再匹配app的url,匹配成功后就返回该请求的视图。要一级一级的匹配。

现在打开项目的urls.py ,往里面添加一条路由(添加的路由就是刚刚写的那个app):

from django.contrib import admin
from django.urls import include, path urlpatterns = [
path('polls/', include('polls.urls')),//这个就是添加的app路由
path('admin/', admin.site.urls),
]

添加的app路由说明:polls/  app的名称,include(‘polls.urls’):就是让框架去找polls的路由系统。:就是先从根url匹配,匹配成功之后,再去子级的url进行匹配,直到全部匹配完成,在返回最后的视图。

还有一步就是写好app之后得告诉框架我们有一个app,也就是在项目里面注册app:打开项目的settings.py ,找到里面的INSTALL_APPS  在里面输入刚刚写的app名称即可,或者按照里面的格式也可以。到这里就完成了Django一个应用程序app的编写,也就是往项目里添加了一个功能(polls功能)投票功能。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

说明两个函数:

1、path()函数:path函数有四个参数:前面俩个是必须要有的,一个是route参数(即路由参数)一个是view参数(即视图参数);后面两个可选,一个是kwargs参数(传一个字典给目标视图)一个是name参数(可以全局的引用某一个url)。

2、include()函数:include()函数允许引用其他 URLconfs。每当 Django 遇到 时include()函数,它都会切断与该点匹配的 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 以进行进一步处理。

现在就完成了一个项目app的编写。运行该项目,输入app指定的url就可以得到刚刚编写的app视图里面的内容了~~~

最新文章

  1. [地图SkyLine二次开发]框架(5)完结篇
  2. linux之vim编辑神器
  3. URL、URI和URN三者之间的区别
  4. mybatis知识总结
  5. Android 从AndroidManifest获取meta-data
  6. SQL Server 作业监控
  7. HDU 1017 A Mathematical Curiosity【水,坑】
  8. 非线性规划带约束-scipy.optimize.minimize
  9. MySQL 文章目录
  10. yii restful和一般路由共存
  11. Python module ---- os
  12. WebSocket异步通讯,实时返回数据相关问题论坛
  13. 【iOS开发】如何用 Swift 语言进行LBS应用的开发?
  14. MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)
  15. 显示eclipse中Problem窗口的方法
  16. 使用T4模板调用Sqlserver链接生成自己的模板
  17. sql语句分组/排序/计算总数/连接等sql语句书写
  18. 使用C#压缩解压rar和zip格式文件
  19. ④ 设计模式的艺术-04.抽象工厂(Abstract Factory)模式
  20. 【Linux】shell判空

热门文章

  1. 【SpringCloud技术专题】「Gateway网关系列」(3)微服务网关服务的Gateway全流程开发实践指南(2.2.X)
  2. 【笔记】golang中使用protocol buffers的底层库直接解码二进制数据
  3. prometheus基本概念(思维导图)
  4. Cesium入门4 - 创建Cesium Viewer
  5. 2022GDUT寒训专题一J题
  6. 使用kubeadm搭建k8s集群
  7. hostnamectl主机名
  8. CNN-卷积神经网络简单入门(2)
  9. 关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
  10. Swift逻辑分支