此文仅用于记录学习过程
-
django的安装
系统:ubuntu 安装命令:sudo pip3 install Django -i https://pypi.tuna.tsinghua.edu.cn/simple -
创建新项目
django-admin.py startproject my_site
.
├── manage.py #管理程序文件
└── my_site
├── asgi.py
├── init.py
├── settings.py #程序的配置文件
├── urls.py #路由
└── wsgi.py -
创建app
django-admin.py startapp app1
├── admin.py #数据库后台
├── apps.py #django把项目和app关联起来的文件
├── init.py
├── migrations #数据库相关
│ └── init.py
├── models.py #数据库操作
├── tests.py #单元测试
└── views.py #业务逻辑 -
在urls.py编写路由,在iews.py写业务函数
-
启动测试项目
在根目录下,用终端输入
python3 manage.py runserver 0.0.0.0:8000
启动项目测试,转到浏览器断http://localhost:8000/路径名称 即可访问
- 模板引用
创建html模板目录,和app文件夹同级。然后在setting中的TEMPLATES中的DIRS写进目录地址BASE_DIR / “html”,因为我用的djanhgo版本是3.1.1,所以直接按照这种方式拼接即可,不需要使用os.path.join(BASE_DIR,“html”)
然后在views.py 中
def test_view(request):
return render(request,"test.html")
返回的时候用render直接指向html目录下的html文件即可
-
静态路由、动态路由
path converters:str\int\slug\uuid\path
用法:path('articles/2003/',views.article_2003),
-
ORM作用
优点:实现了代码与数据操作的解耦、无需写原生sql语句,提高开发效率、防止sql注入
缺点:牺牲性能、复杂语句较难实现
ORM映射字段类型:
autofield
BigAutoField
BinaryField
Booleanfild
Charfield
DateField #2020-09-21
DateTimeField #2020-09-21 10:52:00
DecimalField #设置精度的十进制数 models.DecimalField( max_digits=3, decimal_places=2,...)
DurationField
EmailField
FileField #储存文件
FloatField
ImageField
IntegerField
GenericIPAddressField #ip地址,支持ipv4、6
NullBooleanField #比BooleanField多支持了NULL
PositiveIntegerField #正整数 0~2147483647
PositiveSmallIntegerField #短正整数 0~32767
SlugField #label
SmallIntegerField
TextField
TimeField
URLField
UUIDField
- 表结构设计:
在models.py文件中进行表结构的设计
on_delete:决定关联对象删除时,如何处理当前记录
CASCADE:关联删除
PROTECT:名下有东西时无法删除
SET_NULL: