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