Django 是由Python开发的一个免费的开源web框架,可以用于快速搭建网站。
ps:web框架,也叫web应用框架,提供数据库接口,标准样板,会话管理等来支持网站,网络应用,服务的开发。
![](https://i-blog.csdnimg.cn/blog_migrate/93df088a4d62f1f9875992c1589c89fa.png)
安装django
下载安装包Django-1.9.6.tar.gz
tar zxvf Django-1.9.6.tar.gz
cd Django-1.9.6
python setup.py install
也可以通过pip直接安装:pip install django==1.9.6
安装结束后进入Python交互界面查看成功与否
![](https://i-blog.csdnimg.cn/blog_migrate/de648904fbb4f044fe71a4cf91944327.png)
开始创建项目
[root@localhost soft]# django-admin startproject mypro
目录结构
![](https://i-blog.csdnimg.cn/blog_migrate/e7330cc758046bc07906966e142d4e77.png)
[root@localhost soft]# cd mypro/
[root@localhost mypro]# ls
manage.py mypro
[root@localhost mypro]# django-admin startapp app01
[root@localhost mypro]# ls
app01 manage.py mypro
![](https://i-blog.csdnimg.cn/blog_migrate/421272325b4c640462b5a153574d09fc.png)
django主要文件:
manage.py:配置管理的接口
urls.py:网址入口,关联到对应的views.py中的一个函数,访问网址就对应一个函数。
settings.py:配置文件
admin.py:配置后台管理界面
views.py:处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中html文件将显示内容输出到网页。
models.py:定义类,每个类对应数据库中的一张表。
admin.py:配置后台管理界面
templates文件夹:存放网页模板
配置数据库(以mysql为例)
[root@localhost mypro]# cd mypro/
[root@localhost mypro]# ls
__init__.py settings.py urls.py wsgi.py
编辑settings.py文件
![](https://i-blog.csdnimg.cn/blog_migrate/5144c210fa11f0011bffa659ff2a58c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f11cc107acd06884120f4902e713b6fd.png)
加载app:
![](https://i-blog.csdnimg.cn/blog_migrate/e721ccd2278447b2b6e34e827f586c42.png)
启动服务,可以指定端口,默认监听本机8000端口, 0.0.0.0代表监听所有网络接口和IP地址,即其他电脑都可以访问
[root@localhost mypro]# python manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
July 13, 2016 - 07:54:06
Django version 1.9.6, using settings 'mypro.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
![](https://i-blog.csdnimg.cn/blog_migrate/db45b6f9a8b6ac43d753f90c4caa3ec2.png)
设计model(数据库表)
[root@localhost app01]# vi models.py
class Server(models.Model):
hostname=models.CharField(max_length=50,unique=True)
ip=models.GenericIPAddressField(unique=True)
passwd=models.CharField(max_length=20)
cpu=models.CharField(max_length=20)
disk=models.CharField(max_length=10)
memory=models.CharField(max_length=10)
os=models.CharField(max_length=20,default='CentOS 6.5',verbose_name='Operation System')
def __str__(self):
return self.hostname
将model注册到管理页面
[root@localhost app01]# vi admin.py
from django.contrib import admin
from app01.models import *
# Register your models here.
class Server_show(admin.ModelAdmin):
search_fields=('hostname',) # 搜索框
list_display=("hostname","ip","passwd","cpu","disk","memory","os",) #显示的字段
admin.site.register(Server,Server_show)
同步数据库,在数据库中创建对应表 ORM
[root@localhost mypro]# python manage.py makemigrations
Migrations for 'app01':
0001_initial.py:
- Create model Server
[root@localhost mypro]# python manage.py sqlmigrate app01 0001
BEGIN;
--
-- Create model Server
--
CREATE TABLE `app01_server` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `hostname` varchar(50) NOT NULL UNIQUE, `ip` char(39) NOT NULL UNIQUE, `passwd` varchar(20) NOT NULL, `cpu` varchar(20) NOT NULL, `disk` varchar(10) NOT NULL, `memory` varchar(10) NOT NULL, `os` varchar(20) NOT NULL);
COMMIT;
[root@localhost mypro]# python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, app01, auth, sessions
Running migrations:
Rendering model states... DONE
Applying app01.0001_initial... OK
此时同步结束,在数据库中会生成对应的表,表名为APP的名称+"_"+类名,会自动增加自增长的id字段,并且设为主键,即id=models.AutoField(primary_key=True).若自定义了主键,将不会自动添加id列
![](https://i-blog.csdnimg.cn/blog_migrate/3f4e7e343f98e2171033bf8e81eec539.png)
表结构与创建model时指定的一样
![](https://i-blog.csdnimg.cn/blog_migrate/be81dd8979b57fbd63990f5cb02f79ae.png)
设置后台管理超级用户
[root@localhost mypro]# python manage.py createsuperuser
Username (leave blank to use 'root'):
Email address:
Password:
Password (again):
Superuser created successfully.
访问后台管理系统
前端也可以显示
![](https://i-blog.csdnimg.cn/blog_migrate/6554e7828d3cc09fee6e5ed273a97d08.png)
现在开始前端页面的编写
创建模板
[root@localhost mypro]# mkdir templates
在settings.py中定义模板路径
os.path.join(BASE_DIR, 'templates')
![](https://i-blog.csdnimg.cn/blog_migrate/94432f786eb11b0e7568c7c91a07c8b4.png)
在templates下创建模板文件index.html
![](https://i-blog.csdnimg.cn/blog_migrate/59cc3f93c19247beba490f878c975643.png)
<!DOCTYPE html>
<html>
<body>
<p>
hello world!
</p>
</body>
</html>
创建视图函数
[root@localhost app01]# vi views.py
![](https://i-blog.csdnimg.cn/blog_migrate/f12243c635ec05bb529f3e87bb15c5ef.png)
def index(request):
return render(request,'index.html')
设置路由
[root@localhost mypro]# vi urls.py
![](https://i-blog.csdnimg.cn/blog_migrate/e6311c2e0b231aff317208f8e4142c29.png)
这样,一个基于django的MTV模式的网站就搭建起来了。