django 开发之模型以及静态问题和图片的使用

Posted freewsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 开发之模型以及静态问题和图片的使用相关的知识,希望对你有一定的参考价值。

使用Django的模型,基本步骤:

1.创建model

2.加入到admin.py中去

3.执行生成迁移:python manage.py makemigrations blog

4.执行迁移,生成表单

技术分享图片

 

需要注意的是第二步,一定要加入APP相应的adimn.py 上去,再执行迁移,否则不会启用该model

 

adminModel的定制:

从工程的角度来讲,结合以前的.NET Core的项目过程,我喜欢做成各个功能模块在文块夹组织上的分离,类似下同的工程结构:

技术分享图片

 

 这里记录两个东西:

1. media_root  media_url  与  static_url   static

 查询官方的文档上面是说,这两个目录是不能配置成一样的。  

MEDIA_ROOT 按照很多人的理解是指上传的imagefileld与filefield这种动态的上传文件的目录,亲测之后,还是算比较正确的理解的   需要注意的是:imagefield的upload_up  是可以自定义的

STATIC_ROOT 是用来存放类似于CSS,JS这种静态文件的

上一个类似的配置  

技术分享图片

配置后,在前端的使用方式是这样的:

技术分享图片

 

 需要这两个地方的路径的写法,以及存储时的时候路径,一般的,我们的路径字段,一般都是只需要存储文件名

技术分享图片

要使存储的图片正确在template上面显示出来,这几个地方都要配置,在测试的时候,可以直接访问:

http://127.0.0.1:8000/img/xxx.jpg   --->通过media_url的配置信息,其实是访问服务器上面的路径: /static/upload/xxx.jpg   只要明白这个道理,相信就会正确使用这个配置

 

补充说明一下,在上面的项目分层的过程中:

对于__all__的一些理解:

1.在模块(*.py)中使用__all__  意为:导出__all__列表里的类、函数、变量等成员,

否则将导出modual中所有不以下划线开头(私有)的成员,

2.在包(一个包含__init__.py的文件夹)的__init__.py中__all__意为导出包里的模块

技术分享图片技术分享图片

 

如果我们在models的模块中__init__.py 的__all__ 中把blogpost去掉,就会出现这个警告,这相当于模块间的引用,这样就能理解了。

 

以上是关于django 开发之模型以及静态问题和图片的使用的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 模型中显示静态图像

Python全栈开发之Django进阶

Django 之瀑布流实现

Django 之瀑布流实现

Django框架之URL反向解析静态文件配置以及应用的创建

Django框架之URL反向解析静态文件配置以及应用的创建