Django
一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。
1、安装好python django(这步略过,安装过程自行完成,网上安装步骤很多),安装的版本不同而生成的文件目录也不同,这里用的是1.6.5的版本的django;
[root@node3 ~]# django-admin.py --version 1.6.5
2、创建django项目
[root@node3 python]# django-admin.py startproject mysite2 [root@node3 python]# cd mysite2/ [root@node3 mysite2]# ll total 8 -rwxr-xr-x. 1 root root 250 Jun 9 22:20 manage.py drwxr-xr-x. 2 root root 4096 Jun 9 22:20 mysite2
以上的是1.6.5版本生成的一个manage.py和一个目录mysite2,如是1.3.7的版本的话生成的是以下的格式:
[root@node1 python]# cd mysite2/ [root@node1 mysite2]# ll total 16 -rw-r--r--. 1 root root 0 Jun 10 10:19 __init__.py -rw-r--r--. 1 root root 503 Jun 10 10:19 manage.py -rw-r--r--. 1 root root 5203 Jun 10 10:19 settings.py -rw-r--r--. 1 root root 568 Jun 10 10:19 urls.py
3、这里我们还是以1.6.5的版本为例说明问题,如果我们需要连接数据库,那我们需要去修改mysite2文件夹里的settings.py文件;
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 需要连接什么数据库 'NAME': 'mysite2', # 需要连接的数据库名 'USERNAME': 'root', # 连接数据库的用户名 'PASSWORD': 'linux', # 连接数据库的密码 'PORT': '3306', # 端口 } } 我们还可以改一下时区和使用的语言 LANGUAGE_CODE = 'en-zh' # 中文 TIME_ZONE = 'Asia/Shanghai' # 亚洲,上海
4、之后就可以启动django了,切换到manage.py目录文件下,如不写0.0.0.0:8000(监听所有地址),那默认是监听127.0.0.1:8000这个套接字;
[root@node3 mysite2]# python manage.py runserver 0.0.0.0:8000
5、然后就可以在页面上访问了,用本机的地址加端口就可以访问:
http://10.17.1.151:8000/
################ 以下是新建一个APP的简单设置步骤 ############
1、使用manage.py创建一个APP;
[root@node3 mysite2]# python manage.py startapp myapp [root@node3 mysite2]# ll total 12 -rwxr-xr-x. 1 root root 250 Jun 9 22:20 manage.py drwxr-xr-x. 2 root root 4096 Jun 10 01:47 myapp drwxr-xr-x. 2 root root 4096 Jun 9 23:29 mysite2
2、为了使 Django 认识到新应用程序的存在,还需要向 settings.py 文件中的 INSTALLED_APPS 添加一个条目。
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', 添加新建的app )
3、切换到myapp中,创建一个模型,也就是在moduls.py文件中新建一个类,做个类代表对应数据库中的一张表;
[root@node3 myapp]# vim models.py from django.db import models class Teacher(models.Model): name = models.CharField(max_length=30) gender = models.CharField(max_length=5) age = models.CharField(max_length=5) job = models.CharField(max_length=50) def __unicode__(self): return "%s, %s, %s, %s" % (self.name, self.gender, self.age, self.job) class Student(models.Model): name = models.CharField(max_length=30) gender = models.CharField(max_length=5) age = models.CharField(max_length=5) course = models.CharField(max_length=50) def __unicode__(self): return "%s, %s, %s, %s" % (self.name, self.gender, self.age, self.course)
## 创建完所需要的表之后就可以使用下面命令进行数据库的同步了:
[root@node3 mysite2]# python manage.py syncdb Creating tables ... Creating table django_admin_log Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session Creating table myapp_teacher You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): # admin的用户帐号 Email address: [email protected] Password: # 这个设置是登录admin是的登录密码 Password (again): Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s)
## 登录mysql数据库就可以查看到生成的表了:
MariaDB [(none)]> use mysite2; Database changed MariaDB [mysite2]> show tables; +----------------------------+ | Tables_in_mysite2 | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_session | | myapp_student | # 下面这两个是我们需创建的表student和teacher | myapp_teacher | +----------------------------+ 11 rows in set (0.00 sec) MariaDB [mysite2]> desc myapp_student; +--------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(30) | NO | | NULL | | | gender | varchar(5) | NO | | NULL | | | age | varchar(5) | NO | | NULL | | | course | varchar(50) | NO | | NULL | | +--------+-------------+------+-----+---------+----------------+ 5 rows in set (0.10 sec) MariaDB [mysite2]> desc myapp_teacher; +--------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(30) | NO | | NULL | | | gender | varchar(5) | NO | | NULL | | | age | varchar(5) | NO | | NULL | | | job | varchar(50) | NO | | NULL | | +--------+-------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
4、到这里我们可以通过django的admin管理界面来添加,删除,修改表中的信息,即在myapp目录中的admin.py添加一个class类:
[root@node3 myapp]# vim admin.py from myapp.models import Student, Teacher class TeacherAdmin(admin.ModelAdmin): list_display = ( 'name', 'gender', 'age', 'job', ) class StudentAdmin(admin.ModelAdmin): list_display = ( 'name', 'gender', 'age', 'course', ) admin.site.register(Student, StudentAdmin) admin.site.register(Teacher, TeacherAdmin)
这个保存之后就可以在地址栏中输入http://10.17.1.151:8000/admin来访问到了,在这里就直接可以操作数据库表。