1、Django 入门小实例。
时间:2020-03-16
本文章向大家介绍1、Django 入门小实例。,主要包括1、Django 入门小实例。使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、环境搭建
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管理。
原文地址:https://www.cnblogs.com/sunshine-long/p/12503385.html
- [Asp.Net Core] 1. IIS中的 Asp.Net Core 和 dotnet watch
- kafka数据迁移实践
- HDFS 2.x 磁盘间数据均衡的一种可行办法
- Batik渲染png图片异常的bug修复全程记录
- Web应用服务器安全:攻击、防护与检测
- 基于Go Packet实现网络数据包的捕获与分析
- 动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪
- Hive 时间转换函数使用心得
- Flume-Hbase-Sink针对不同版本flume与HBase的适配研究与经验总结
- 利用Flume 汇入数据到HBase:Flume-hbase-sink 使用方法详解
- 浅谈保证软件工程质量的一些心得体会
- 基于ELK的nginx-qps监控解决方案
- 2017年年度最烂密码排名
- 字符串方法汇总(三)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LeetCode37|两颗二叉搜索树中所有元素
- LeetCode45|数组中重复的数据
- 搭建简易的物联网服务端和客户端-网络控制(二十)
- LeetCode44|在每个树行中找最大值
- LeetCode43|最大层内元素和
- 搭建简易的物联网服务端和客户端-Maibu控制(二十一)
- LeetCode42|层数最深叶子节点的和
- LeetCode41|数组中数组出现的次数
- Django后台管理界面修改(源文件修改)
- 前端工程师不可不知的Nginx知识
- Django1.11 简单登录注册
- 基因表达聚类分析之初探SOM - 自组织特征图
- JMH - Java 代码性能测试的终极利器、必须掌握
- 从零搭建Spring Boot脚手架(6):整合Redis作为缓存
- 换一种姿势挖掘CORS漏洞