最近因为要做一个小型的网站,需求很简单有点像公司内部的管理网站,和室友一起倒腾,发现了一些坑。我自己之前没有接触过python 但是发现真的非常好上手。
我们没人会前端,所以最怕修改网页,一开始选择了Flask框架,我搞了半天遇到各种坑(还要修改css 麻烦),中间件也不好用,劝大家用django,资料多,非常好用。
那么开始说重点,需要做的哪些东西。
/ 是主要的资料,里面是中文的资料建议一点点看下去。
1-项目环境搭建。
1.1第三方库准备
开发环境是mac os 和ubantu 推荐大家下载一个第三方的软件叫 "Anaconda" ,安装非常简单,直接运行脚本就好。
安装完了,可以到命令行运行 pip list。可以看到已经安装的python第三方库 。
此时我们是没有django的库的。
1.2IDE的安装
IDE 使用eclipse,讲一个工具Pydev,安装自行百度,点点就行。
然后 到Eclipse了 New->Project->Pydev->Pydev Django Project,一路next 。发现eclipse 找不到Django 环境,回来点击 click here to configure an interpreter 然后把python interpreter 中的名为python的删掉,那是系统默认的,改成anaconda目录 下 bin/里面的python。默认是2.7.11吧。忘记安装目录?一个命令 sudo find / -name anacon* 搞定~。找到以后加进去,到了图一这一步就结束。
(图1)
2-数据库配置和使用
2.1数据库连接文件配置
我选了mysql,当然在这之前mysql的帐号密码应该自己确定了吧。mysql配置应该简单。但是如果要支持远程访问,比如你把数据库放到云上,别人机器上,毕竟开发不是一个人的事,我自己遇到的坑是"关于 mysql 配置文件中的 bind-address",自行百度,解决方案是删除就好。(推荐几个mysql 连接的桌面软件,用Navicat ,或者mysql workbench 都是不错的)。(后来发现这里输入密码和帐号没什么用还是要去修改在与项目同名的app里面的setting)。现在在mysql自己创建一个database 取名随便。我叫test,其他字段应该不用解释了如图2。
(图2)
2.2创建APP(模块)
然后我们在工程里根目录右击->Django->Create App->输入名字就好。因为网页主要是MVC模式,创两个吧。一个叫db 专用于管理数据库(models 层) 第二个专用于后台逻辑。名字随便取因为可能要对应多个模块。django里面增加一个app 就需要在与项目同名的那个app的setting中Installed_app里面加入app名(如图4)。我们加入以后目录结构(如图3.)
(图3)
(图4)
2.3用django模型层建表
数据库正式开发,数据库创建,在db的models.py中 对应数据库中每个表写class,就是定义好字段,因为Django的目标是要程序员完全脱离数据库的操作。那么我们先不建表,cd 到你的工程目录去,用命令行 用打入 manage.py migrate 命令。效果如图5。
(图5)
如果你的配置是没错的,此时django 已经在你的数据库中建了很多表,都是django自带的,我也没有用起来,唯一用的是django自带的数据库管理界面,类似于Navicat,还支持搜索功能,自己去文档里 学吧。
然后在db的models里写一个表的代码。然后效果如图6 还是用了Manage 脚本。
from __future__ import unicode_literalsfrom django.db import models# Create your db here.class Message(models.Model):
user_id = models.BigIntegerField(blank=True, null=True)
(图6)
到这里表都结束了,实际开发中,我数据库都是先建好的,那我全部都要写每个类是不是很麻烦,有没有偷懒的办法呢?
答案是用./manage.py inspectdb
用了就知道,他会反向生成表的代码, 然后直接复制进models里面就好了。
3-url 解析
3.1url匹配处理函数
在Django中 一般url解析分为两层。
第一层负责解析APP的名,像我在test 里urls.py里写的(如图7)。第一个参数表示响应的url,第二个参数表示处理的模块。
(图7)
第二层是解析到具体的模块中的某个函数来响应对应的url。
比如在view app 中的urls.py(需要自己创建) 写的(图8)url(函数中第一个参数为匹配路径,后一个是对应函数名)里面的home对应view app中的views.py 里的函数home
(图9)
3.2静态网页配置
其实到这个时候已经可以实现响应了。(到这里还要解决一个问题 'Index/home.html')在哪里呢?我们此时创一个文件夹叫templates html都应该放在这里,Index 是一个模块的名字。你可以在templates下面建很多个文件夹,对应很多的APP模块。(html就不属于本文范畴了)此时目录结构为
(图10)
搞定了后别忘记在test的setting 里加上一句代码
(图11)
"就是DIRS"里面.想想也是,不然 Django怎么知道我们的html放在这里呢。
4-逻辑层(也就是最后一步了,怎么样把数据库的东西查出来,放到html中。)
4.1数据库中的数据
往表里插两条数据
(图12)
4.2动态显示数据
看下代码:html部分
(图13)
里面的{%%}是django 自带标签的自己看文档学一下就会。
(图14)
里面的Message.objects.all() 表示从Message表中取出所有数据。还有什么复杂查询自己看文档,一般都是filter exclude,django 还支持sql语句直接写,函数名叫raw().
context就是返回给页面的一个对象里面放了很多值。在python里叫字典(dict)
4.3启动服务器
最后我们用命令行来到我们的目录,敲./manage.py runserver (要支持所有端口 和外网访问加0.0.0.0)。然后出现
(图15)
4.4查看网页
再到浏览器敲127.0.0.1:8000 django默认端口
(图16)
4.5实际开发中问题
结果出来了。遇到具体问题就是查一些文档和stackoverflow。发现一个时区问题,建议和我改成一样。把test里面setting中的时区部分改成这样。否则你会有八个小时的时差,
(图17)
。还有啥问题可以和我讨论的可以留言。小弟也是刚做完这个项目从零开始。码字不易~小问题就不在这里说了。
界面日志界面
管理界面
评论界面
使用的技术
python、JavaScript、CSS、htmlMySQL 数据库jinja2 模板引擎Vue.js 界面框架Nginx Web服务器gunicorn WSGI服务器Supervisor 监控服务进程工具Fabric 自动部署工具学习过程
刚开始跟着作者的教程编写这样一个博客网站的时候感觉很困难,因为自己对web上的很多概念不了解,对web服务器是怎么运行也不清楚,所以不知道作者为什么要这么写代码。后来去学习了Django,知道了什么是ORM,什么是模板等一些概念后,并且能够使用Django搭建一个网站,再跟着作者学习就轻松了一些,希望我的学习过程对你有启发。当然,如果你只想快速的搭建一个网站,可以使用Django、Flask等免费开源的网站框架,而不用自己一步一步的去实现它。
首先啊,在这里先开始的时候,先建议所有的个人和企业都应该关注自己的这个域名的续费情况。如果说现在域名已经被人注册了,如果对方用这个域名重新做了网站,那是非常麻烦的。如果域名被别人注册了,建议联系对方进...
电脑的物理地址是唯一的;我们在命令提示符里面可以查询 网卡物理地址存储器中存储单元对应实际地址称物理地址,与逻辑地址相对应。 方法一: 1.打开网络属性找到本地连接或者无线网络连接 2.点击详细信息...
今天给各位分享香港高防御服务器的知识,其中也会对高防 服务器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!文章目录列表: 1、防攻击香港高防服务器 2、香港服务器租用时有什...
Internet的域名系统采用层次树状结构的命名方法。按照这种命名方法,网络上的任何一台主机或路由器都有一个惟一的层次结构的名字,即域名。域名的结构一般是: ·...三级域名.二级域名.顶级域名 其...
首先回答第一个问题,直接通过ip是可以访问网站的,这个在购买时候进行可以提前咨询客服,问清楚后购买。 以个人的经验,如果你买的是虚拟主机,一般需要另外在购买一个独立ip,因为虚拟主机默认的是共享ip(...
网站结构设计包含网站栏目设计和网站模块设计以来确定网站提供服务的一种逻辑表现形式,也是网页之间的层次关系。 1.网站栏目能起到提纲挈领额作用 2.网站栏目具有清晰导航的功能 3.网站模块要做到顺序清晰...
一、网站切记要有备份; 这是非常重要的一点,同时我们一定要养成及时备份的好习惯。因为网站更新升级的时候我们往往会遇到很多不确定的因素,比方说更新的时候网络不好中途突然卡住了,重新更新导致网站出错,...
1、域名--搜一下域名注册,很多服务商提供注册,填一些资料,交完钱就行了,常用后缀域名不超过100RMB。 2、服务器--这个初期最好花钱买个虚拟主机体验一段时间,不一定要精通;熟悉了以后可以买个美国...