1.初始化环境
我这边用的是 pycharm,选择 Django,新建一个虚拟环境。如下图所示
等待一丢丢会,项目初始化成功
在命令行中执行 python,可以看到已经是 python3.7 了
项目结构如下:
. ├── manage.py # python命令管理 ├── student # 项目配置相关 │ ├── __init__.py │ ├── settings.py # 配置项 │ ├── urls.py # 路由规则 │ └── wsgi.py # Web Server Gateway Interface └── templates # 模版
2.创建一个应用 student_sys
使用 manage 创建一个 app
python manage.py startapp student_sys
这时候我们的项目结构已经发生了变化
. ├── manage.py ├── student │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── settings.cpython-37.pyc │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── student_sys │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py └── templates
下面就开始扣代码吧 ,"cheat is cheaper,show me code"
ok,let`s go!
编写代码
model.py
修改 model,定义相关的字段。这边是用的 python3.7,如果你用 python2 版本的需要加上相关编码声明
from django.db import models # Create your models here. class Student(models.Model): SEX_ITEMS = [ (1, 'boy'), (2, 'girl'), (0, 'unknow'), ] STATUS_ITEMS = [ (0, 'apply'), (1, 'pass'), (2, 'refuse') ] name = models.CharField(max_length=128, verbose_name='name') sex = models.IntegerField(choices=SEX_ITEMS, verbose_name='sex') profession = models.CharField(max_length=128, verbose_name='job') email = models.EmailField(verbose_name='email') qq = models.CharField(max_length=128, verbose_name='QQ') phone = models.CharField(max_length=128, verbose_name='phone') status = models.IntegerField(choices=STATUS_ITEMS, default=0, verbose_name='check_status') created_time = models.DateTimeField(auto_now_add=True, editable=False, verbose_name='created_time') def __str__(self): return '<Student: {}>'.format(self.name) class Meta: verbose_name = verbose_name_plural = 'student_info'
admin.py
from django.contrib import admin # Register your models here. from .models import Student class StudentAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'sex', 'profession', 'email', 'qq', 'phone', 'status', 'created_time' ) list_filter = ('name', 'status', 'created_time') search_fields = ('name', 'profession') fieldsets = ( (None, { 'fields': ( 'name', ('sex', 'profession'), ('email', 'qq', 'phone'), 'status' ) }), ) admin.site.register(Student, StudentAdmin)
settings.py
添加 student 到 INSTALLED_APPS
INSTALLED_APPS = [ 'student', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] .....
迁移创建表
在包含 manage.py 那一级目录下执行
python manage.py makemigrations python manage.py migrate # 迁移创建表,输出如下 Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK
创建后台用户
python manage.py createsuperuser
到这里我们简单的管理后台就写完了
启动访问
python manage.py runserver 8000
今天就到这里,下面的功能后面在实现
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于