Django例程:建立一个投票应用
编写一个Django应用
-
cd到指定文件夹,创建项目,生成mysite目录(整个项目的容器)(mysite可以换名字)
-
manage.py:管理项目的命令行工具
-
mysite/目录:一个python包,用mysite.url的形式调库
-
__init__:包的标识
-
settings.py:配置文件,用于项目的默认设置,添加应用时需在此注册
-
urls.py:url声明,注册各应用的url
-
asgi.py:运行在 ASGI 兼容的 Web 服务器上的入口
-
wsgi.py:运行在 WSGI 兼容的Web服务器上的入口
-
-
-
用于测试开发的本地服务器:
...\> py manage.py runserver
-
创建应用:
...\> py manage.py startapp polls
-
__init__:包的标识是
-
admin.py:生成网站后台
-
apps.py:?
-
migrations/:存数据库结构,自动生成
-
models.py:定义关系及其属性和方法,用于生成数据库
-
tests.py:用于测试代码
-
views.py:每def一个view是一个网页
-
-----------------------------以下为手动建立----------------------------------------------
-
templates/:存放html模板
-
statics/:存放css样式文件和图片等静态资源
-
urls.py:存放url patterns,确定各种url会到哪个view
-
path函数:route匹配url,view确定对应调用的视图函数并传入HttpRequest,name标识url
-
-
-
配置数据库
-
在settings.py中设置当前时区
-
使用
...\> py manage.py migrate
来创建/生成数据表 -
在models.py中新建class,每个class是一个关系表
-
-
在settings.py中注册应用(INSTALLED_APPS)
-
接着
...\> py manage.py makemigrations polls
重新检测模型文件,生成迁移后的数据库结构 -
...\> py manage.py migrate
来应用本次迁移
-
-
使用数据库API
-
import对应model
-
.objects.all()
方法可以查询全体 -
用
.
运算来查询已知元组的属性 -
用类的构造函数和
.save()
方法来增加元组 -
__str__
方法可以显示对象内容 -
.objects.fliter()
方法可以进行条件查询 -
.object.get()
方法可以给变量赋值为该关系中的某一元组
-
-
创建管理员账号
-
向管理页面中加入应用:
admin.site.register(关系名)
,注册类的所有对象会被显示,并可以被编辑 -
建立视图
-
基本要求:返回一个HttpResponse或者抛出一个异常
-
从models中的类的实例里得到数据,用render来导入模板
-
模板中的url可以不用硬编码
-
需要为urls添加命名空间
-
-
用合适的try-except-raise来实现业务逻辑,抛出异常等
-
注意快捷函数
-
-
用
request.POST()
获得数据,这是一个类字典对象,可以获取提交的数据 -
返回一个
HttpResponseRedirect
,重定向至新的url -
通用视图:
-
具有特定模式的页面,抽象成一个class,继承于特定模式的通用视图
-
detailView期望从url中捕获主键值
-
-
-
写测试
-
对每个模型或视图建立一个测试类
-
模型要测试所有的方法
-
视图要用client模拟用户行为
-
-
使用静态文件
-
建立目录:应用/static/应用/
-
使用样式,图片和视频
-
-
后台开发
-
注册模型使之被显示
-
更改在列表中显示属性:
list_display
-
使用display()
-
-
建立专门的class来设置显示内容
-
自定义后台外观:工程模板
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!