1、指定版本安装django
pip install django==1.8.2
2、创建项目
django-admin startproject commpany
# 目录下多了一个commpany $ tree commpany/ commpany/ ├── commpany │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py
至此创建好一个 commpany的项目。再来创建一个公司的部门模块,作为一个项目中的应用。
3、创建应用
cd commpany/
python2 manage.py startapp department
# 项目架构
$ tree
.
├── commpany # 和项目名称同名
│ ├── __init__.py # 空文件
│ ├── settings.py # 全局配置文件
│ ├── urls.py # 全局路由配置
│ └── wsgi.py #
├── department # 应用模块
│ ├── __init__.py
│ ├── admin.py # 后台管理
│ ├── apps.py
│ ├── migrations # 模型模块执行迁移
│ │ └── __init__.py
│ ├── models.py # 模型处理模块
│ ├── tests.py
│ └── views.py # 视图模块
└── manage.py
1、模型需要和数据库进行交互,首先配置settings.py,修改数据库配置。
DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘HOST‘:‘127.0.0.1‘, ‘PORT‘:‘3306‘, ‘USER‘:‘root‘, ‘PASSWORD‘:‘root‘, ‘NAME‘: ‘company‘, } }
2、department.moduls.py文件中设计模型
# Create your models here. # 定义一个部门类,对应部门表,继承models类 class department(models.Model): # 部门名称,Char类型,长度20 d_name = models.CharField(max_length=20) # 部门人员数量,int类型,长度10 d_num = models.IntegerField() def __str__(self): return self.d_name.encode(‘utf-8‘) # 定义一个人员表 class staffInfo(models.Model): s_name = models.CharField(max_length=20) s_gender = models.BooleanField() s_detailInfo = models.TextField() s_department = models.ForeignKey(department) def __str__(self): return self.s_name.encode(‘utf-8‘)
3、生成表之前在settings配置文件注册应用信息。
INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘department‘, # 添加应用名称 ]
4、生成数据表,执行前要确认mysql中存在settings.py中配置的数据库名称。
# 生成迁移文件
python manage.py makemigrations
# 执行迁移
python2 manage.py migrate
注意:使用mysql需要安装pymysql模块,pip install pymysql既可。然后在项目的__init__.py中导入mysql模块。
import pymysql
pymysql.install_as_MySQLdb()
执行时报了一个警告,并不影响迁移结果。
department.department.d_num: (fields.W122) ‘max_length‘ is ignored when used with IntegerField HINT: Remove ‘max_length‘ from field
去掉 d_num = models.IntegerField(max_length=10) 中的长度约束既可。
5、检查mysql。
mysql> use company; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +----------------------------+ | Tables_in_company | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | department_department | | department_staffinfo | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 12 rows in set (0.00 sec)
可以发现,实际的表名和moduls中的有所不同。
6、运行项目。
$ python2 manage.py runserver [可以指定端口号] Performing system checks... System check identified no issues (0 silenced). March 16, 2020 - 05:29:27 Django version 1.11.27, using settings ‘commpany.settings‘ Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
7、浏览器访问127.0.0.1:8000
有了表,我们就要往里面添加数据,目前没有前端页面,可以通过后台管理系统对表进行增删改查操作。
1、首先,添加一个后台管理的账号。
$ python2 manage.py createsuperuser # 根据提示输入信息。 Username (leave blank to use ‘steven‘): admin Email address: admin@163.com Password: Password (again): Superuser created successfully.
2、运行项目,浏览器访问后台管理http://127.0.0.1:8000/admin。
3、页面汉化
settings.py中修改:
setting.py LANGUAGE_CODE = ‘zh-Hans‘ TIME_ZONE = ‘Asia/Shanghai‘
此时,并没有将模型类添加到admin管理后台
4、booktest/admin.py 注册模型。
from models import *
admin.site.register(department)
admin.site.register(staffInfo)
刷新浏览器,出现Department管理。
在前端可以对数据库进行一些增删改查。
1、想让Staff info展示更多的内容,在admin.py中添加类。
class StaffInfoAdmin(admin.ModelAdmin): list_display = ["s_name","s_detailInfo"] admin.site.register(department) admin.site.register(staffInfo,StaffInfoAdmin)
原文:https://www.cnblogs.com/sunshine-long/p/12503385.html