干货 | django框架文案上传
点击上方“
程序人生
”,选择“置顶公众号”
第一时间关注程序猿(媛)身边的故事
作者
程序人生 x 张涛 联合发布
主题
《Python追梦人》
在平时的web开发中,文件上传是常见的功能,在django中实现文件的上传也非常简单,
实
现步骤与其他功能实现类似:1.新建一个模板, 2.编写模板对应的view函数,3.配置view与模板关联的url,具体实现步骤如下:
第一步:项目的创建与运行
1.创建Django项目:
命令: django-admin startproject myphotograph
我们来看看startproject创建的内容:
[root@localhost myphotograph]
#tree
.
├──
manage
.py
└──
myphotograph
├── __
init__
.py
├──
settings
.py
├──
urls
.py
└──
wsgi
.py
关于上面自动生成的目录与文件解释如下:
·
外部
myphotograph
/根目录只是一个项目的容器。它的名字与Django无关; 您可以将其重命名为您喜欢的任何内容。
·
manage.py:一个命令行实用程序,可以让您以各种方式与此Django项目进行交互。你可以阅读所有的细节 manage.py在Django的管理和manage.py。
·
内部
myphotograph
/目录是您的项目的实际Python包。它的名字是您需要用来导入其中的任何内容的Python包名称(例如
myphotograph
.urls)。
·
myphotograph
/ init
·
myphotograph
/settings.py:此Django项目的设置/配置。 Django设置会告诉你所有关于设置的工作原理。
·
myphotograph
/urls.py:该Django项目的URL声明; 您的Django动力网站的“目录”。
·
myphotograph
/wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点。
2.运行开发服务器
我们来验证您的Django项目的作品。更改为外部
myphotograph
目录,如果您还没有,并运行以下命令:
$
python
manage.py
runserver注:若当前环境中有两个
python
环境,可使用python3
或python3
.6
命令来调用3.6
的环境,如:$
python3
manage.py
runserver您将在命令行中看到以下输出:
Performing system checks...
System
check
identified
no
issues (0
silenced).You have unapplied migrations; your app may not work properly until they are applied.
Run "python manage.py migrate" to apply them.(注意:现在忽略关于未执行应用数据库迁移的警告)
August 07, 2017 - 15:50:53
Django version 1.11, using settings myphotograph.settings"
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
以上说明已经开始使用Django的开发服务器,这是一个纯粹以Python编写的轻量级Web服务器。 我们将其与Django结合在一起,因此您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好生产。
默认情况下,该
runserver
命令在端口
8000
的内部
IP
上启动开发服务器。当然也可以指定端口开启服务
,
如8080
端口:
$
python
manage.py
runserver8080
如果要更改服务器的IP,请将其与端口一起传递。例如:
$
python
manage.py
runserver0
:8000
注意:通过IP访问后报如下错误:
DisallowedHost at /polls
Invalid HTTP_HOST header:
"192.168.*.*:8000"
. You may needto
add
"192.168.*.*"
to
ALLOWED_HOSTS.HTTP_HOST标头无效:
"192.168.*.*:8000"
。您可能需要将“192.168
.*.*”添加到ALLOWED_HOSTS如:ALLOWED_HOSTS = [
"192.168.104.240"
]或:ALLOWED_HOSTS = [
"192.168.104.240"
,"localhost"
,"127.0.0.1"
]或支持所有 ALLOWED_HOSTS = [
"*"
]第二步:应用的创建
(1).
创建一个应用程序
Django自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。
要创建您的应用程序,请确保您与目录位于同一目录,
manage.py
并键入以下命令:
$
python
manage.py
startapp myapp注:若当前环境中有两个
python
环境,可使用python3
或python3
.6
命令来调用3.6
的环境,如:$
python3
manage.py
startapp myapp这将创建一个目录myapp,其目录如下:此目录结构将容纳轮询应用程序。
[root@localhost myphotograph]# tree myphotograph /
myphotograph /
├── manage.
py
├── myphotograph
│ ├── __init__.
py
│ ├── settings.
py
│ ├── urls.
py
│ └── wsgi.
py
└── myapp
├── admin.
py
├── apps.
py
├── __init__.
py
├── migrations
│ └── __init__.
py
├── models.
py
├── tests.
py
└── views.
py
(2). 手动创建templates 和static文件夹
创建好以后在myphotograph下的settings里边,进行如下设置:
1.将创建好的app进行添加:
注:要是要添加多个app的话,记得加逗号
2.设置TEMPLATES的DIRS:
代码如下:(os.path.join(BASE_DIR,’templates’)
3.设置静态文件:
注:中间不要有空格或者其他符号,格式必须标准,否则静态文件就不会起作用,导致图片不能正常显示。
第三步:模板
,
路由,
视图的编写(1). 模板models的配置
1>倒入需要使用的模块
2>定义photo类
注:_str_方法的用途是将数据格式化输出
3> 因为需要连接数据库进行数据的处理,所以需要在myphotograph的settings下边设置一下数据库的连接,即配置一下DATABASES
注:user和password根据自己的设置来进行更改,host这里可以写成你的本机ip也可以写成localhost
4>关于数据库连接这里还有最重要的一点就是myphotograph下的init.py文件
注:导入pymysql模块后,进行上图的操作.这样才能保证数据库的正常连接,是数据库连接的重中之重。
(2).
配置主路由和子路由
1.在myapp下手动创建一个urls.py文件
2. 在myphotograph下的urls,py文件中进行配置
1>在第一行代码中导入include
2>将myapp的urls添加进主路由中
注:这样做就可以在开始访问时直接跳转到myapp的子路由文件
4.配置子路由
1>
先导入需要使用的包和视图文件
2>
将需要实现的功能进行整理,然后根据需求来编写路由:
注:
1>
在浏览相册路由这里必须设置pIndex,因为pindex是分页操作时最重要的一个参数.
2>
在编辑相册和删除相册时的uid也是进行操作的唯一标识,千万不要忘记,注意书写格式
3>
每个路由后面的name属性,就是给这个操作起了一个别名,也可以说是外号,在用浏览器进行访问时,就可以用别名进行访问
(3).templates模板的创建
1>在templates下创建一个myapp文件夹
2>创建需要用到的多个模板页面
注:
1>
menu.html是主模板,也可以理解为页面显示的主样式
2>
在继承menu.html时注意书写格式,花括号里边套上百分号
3>
在html中要想将数据变成活的,也就是从数据库中提取数据的话,一个是在页面内注意书写格式,还有一个是在views.py下的操作,如下图
注:在结尾的时候不要忘记写{%endfor%},来结束循环,否则数据不会显示出来
4>
每个页面有每个页面各自的功能,也就是每个页面form表单的action后边是不一样的,后边跟着不同的路由
注:根据你自己的路由配置和以页面的功能,看情况来书写路由。书写格式必须正确。
(4). Views视图的实现
1>先导入所需要的包
2>根据路由和需要实现的功能来写函数
注:
1>一定要对urls.py,index.html和views.py的pindex进行确认,防止少传漏传
2>封装完context后不要忘记把context传入到页面中
注:
1>
注意缩放后的图片的保存路径,在static静态文件下建立一个pics文件夹
2>
写的时候尽量 用 try 和except这样方便错误的排查
注:这个函数是进行信息的编辑操作,注意在函数中必须把uid传递进来
注:这个函数是将编辑完成后的信息进行保存和提交,即在数据库中进行更改
注:uid必须传到函数里边,这样才能进行下一步操作。
Python追梦人微信群(文章里学习,答疑在社群)
添加上面小姐姐微信:CSDN30 拉你入群
- 南川与重庆市广东商会签订框架协议
- 干货---看完今天的走势再说吧(早盘必读)
- 华南营销精英召集!第三届广州4A干货大会来袭!
- 干货--关心自己该关心的事(早盘必读)
- 【干货】 矿山片区,晴隆菜场周边,老商机厂周边,自来水公司周
- 心血管系统高频考点50条,纯干货!
- 21岁女孩自杀式减肥,照片和减肥方式不忍直视,干货点评
- 中国对合资企业的相关规定从未偏离世贸组织框架
- 走向滞胀,老百姓该怎么办?(纯干货)
- 华南营销精英召集!第三届广州4A干货大会来袭