需求
提供一个学员管理系统,一个前台页面,展示现有学员,并供新学员提交申请,一个后台,能够处理申请。

pip install django==1.11.2

创建项目
使用控制台进入到一个目录下,具体是哪个目录可以根据自己意愿选定,
创建项目根目录: mkdir student_house,这是我们的项目目录,然后再我们创建项目结构: cd student_house && django-admin startproject student_sys,得到下面的结构:

创建APP
进入student_house/student_sys中,通过上一步创建好的manage.py创建一个app: python manage.py startapp student。现在目录结构如下:

编写代码
可以在Model层开始写代码了,这是一个简单的需求,只需要一个Model就可以满足。
student_house/student_sys/student/models.py:
from __future__ import unicode_literals

from django.db import models

class Student(models.Model):
SEX_ITEMS = [(1, '男'), (2, '女'), (0, '未知')]
STATUS_ITEMS = [(0, '申请'), (1, '通过'), (2, '拒绝')] name = models.CharField(max_length=128, verbose_name="姓名")
sex = models.IntegerField(choices=SEX_ITEMS, verbose_name="性别")
profession = models.CharField(max_length=128, verbose_name="职业")
email = models.EmailField(verbose_name="Email")
qq = models.CharField(max_length=128, verbose_name="QQ")
phone = models.CharField(max_length=128, verbose_name="电话")
status = models.IntegerField(choices=STATUS_ITEMS, verbose_name="审核状态")
created_time = models.DateTimeField(auto_now_add=True, editable=False, verbose_name="创建时间") def __unicode__(self):
return '<Student: {}>'.format(self.name) class Meta:
verbose_name = verbose_name_plural = "学员信息"
再来写admin.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
from .models import Student class StudentAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'sex', 'profession', 'email', 'qq', 'phone', 'status', 'created_time')
list_filter = ('sex', 'status', 'created_time')
search_fields = ('name', 'profession')
    fieldsets = ((None, {'fields': ('name', ('sex', 'profession'), ('email', 'qq', 'phone'), 'status')}),)
 admin.site.register(Student, StudentAdmin)
把这个studentapp放到settings.py中。
我们只需要在INSTALLED_APPS配置的最后,或者最前面增加'student'即可:
settings.py文件:

后台部分就完成了,我们来创建下表以及超级用户,通过下面命令:
python manage.py makemigrations 创建迁移文件
python manage.py migrate 创建表
python manage.py createsuperuser 根据提示,输出用户名,邮箱,密码

启动项目: python manage.py runserver,访问: http://127.0.0.1:8000,看到一个提示页

这是因为我们还没开发首页。我们可以进入到admin的页面: http://127.0.0.1:8000/admin/。用上面刚刚创建好的账户登录,就能看到一个完整的带有CURD的后台了。

基础配置(中文)
通过上面的配置,看到的界面应该是英文的,并且时区也是UTC时区。所以我们需要进一步配置。
在settings中有如下配置:
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans' # 语言 #TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai' # 时区 USE_I18N = True # 语言
USE_L10N = True # 数据和时间格式 USE_TZ = True # 启用时区

修改完这些之后,刷新一下

吴裕雄--天生自然PythonDjangoWeb企业开发:学员管理系统后台的更多相关文章

  1. 吴裕雄--天生自然PythonDjangoWeb企业开发:学员管理系统- 前台

    开发首页 做一个简单的用户提交申请的表单页面. 首先在student/views.py文件中编写下面的代码: # -*- coding: utf-8 -*- from __future__ impor ...

  2. 吴裕雄--天生自然PythonDjangoWeb企业开发:需求

    开发或者做一个项目,是要有一个需求过来的,而不是无缘无故的,启动一个项目,或者推动整个项目进行下一步迭代.这个需求可能是根据用户反馈增加的,可能是老板提出来的,也有可能是产品经理提出来的,但是无论是什 ...

  3. 吴裕雄--天生自然PythonDjangoWeb企业开发:Django文档阅读简介

    Django是基于MVC模式的框架,虽然也被称为“MTV”的模式,但是大同小异.对我们来说,需要了解的是无论是MVC模式还是MTV模式,甚至是其他的什么模式,都是为了解耦.把一个软件系统划分为一层一层 ...

  4. 吴裕雄--天生自然PythonDjangoWeb企业开发:解决使用相对路径名导入包中子模块问题

    问题 将代码组织成包,想用import语句从另一个包名没有硬编码过的包中导入子模块. 解决方案

  5. 吴裕雄--天生自然PythonDjangoWeb企业开发:解决Pythonno module named "XX"问题

    在项目中加入 sys.path.append('你的django项目路径') sys.path.append('python的site-packages路径')

  6. 吴裕雄--天生自然PythonDjangoWeb企业开发:解决ModuleNotFoundError: No module named 'config'报错

    使用创建完模块应用之后python manage.py startapp test_app,您应该进入settings.py并将其注册到

  7. 吴裕雄--天生自然PythonDjangoWeb企业开发:框架基础和技术选型

    简单的Web Server import socket eol1 = b'\n\n' eol2 = b'\n\r\n' body = '''Hello,world!<h1>tszrwyx& ...

  8. 吴裕雄--天生自然 R语言开发学习:R语言的安装与配置

    下载R语言和开发工具RStudio安装包 先安装R

  9. 吴裕雄--天生自然Django框架开发笔记:Django Admin 管理工具

    Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: ...

随机推荐

  1. Linux - seq

    1. 概述 生成序列的命令 之前貌似写过 seq 命令, 这次单独拉出来再写一次吧 节操先放一放 2. 命令 1. 帮助 命令 # 输出我就不打了, # 这个命令可用, 证明组件可用 > seq ...

  2. report_delay_calculation/check_timing/report_annotated_parasitics/report_analysis_coverge

    如何debug 一颗cell 或一段net 的delay,  常用的办法是用report_delay_calculation 报这颗cell 或这段net, 会得到形式如下的report, 从该rep ...

  3. PAT 1014 Waiting in Line (30分) 一个简单的思路

    这题写了有一点时间,最开始想着优化一下时间,用优先队列去做,但是发现有锅,因为忽略了队的长度. 然后思考过后,觉得用时间线来模拟最好做,先把窗口前的队列填满,这样保证了队列的长度是统一的,这样的话如果 ...

  4. flask使用websocket

    # flask使用websocket 1.概述 flask实现websocket有两种方式:flask_sockets,Flask-SocketIO. flask_sockets:该方式是flask对 ...

  5. 排序算法大荟萃——希尔(Shell)排序算法

    1.基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组.所有距离为d1的倍数的记录放在同一个组中.先再各族中进行直接插入排序,然后取第二个增量d2<d1重复上述的分组 ...

  6. MAC Address-Table Move Update Feature

    MAC Address-Table Move Update The MAC address-table move update feature allows the switch to provide ...

  7. iOS 开发之使用链式编程思想实现简单的计算器

    链式编程思想是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好.例如 a(1).b(2).c(3). 链式编程思想最为关键的是,方法的返回值是block,block必须返回对 ...

  8. MySQLroot密码的恢复方法

    MySQLroot密码的恢复方法 有可能你的系统没有 safe_MySQLd 程序(比如我现在用的 ubuntu操作系统, apt-get安装的MySQL) , 下面方法可以恢复 1.停止MySQLd ...

  9. C++文件写入,读出函数ofstream,ifstream的使用方法

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间. 1.插入器(<<)  向流输出数据.比如说系统有一个默认的标准输出流(cout),一般情况下 ...

  10. 【工具类】Java中判断字符串是否为数字的五种方法

    1 //方法一:用JAVA自带的函数 2 public static boolean isNumeric(String str){ 3 for (int i = str.length();--i> ...