Django代码片段
## 开始django项目
# 1. 安装pipenv
pip install pipenv
# 2. 创建项目文件夹:project,虚拟开发环境搭建
pipenv install
# 进入虚拟环境shell
pipenv shell
# 3. 安装项目依赖
pip install django -i https://mirrors.aliyun.com/pypi/simple
# 4. 创建django项目
django-admin startproject [项目地址]
## 配置django项目
# 1. project/setting.py
# 后台英文改为中文
LANGUAGE_CODE = 'zh-hans'
# 国际时区改为中国时区
TIME_ZONE = 'Asia/Shanghai'
## 创建django应用
# 1. 创建并注册应用
python manage.py startapp [APP名]
# 2. 设置应用的后台显示
# django应用文件夹/app.py
from django import AppConfig
class App名Config(AppConfig):
name = "App名"
verbose_name = "后台别名"
# 3. 注册应用
# [项目名]/setting.py
INSTALLED_APPS = [
#...
'应用名.apps.APP名Config',
]
## 创建或生成模型类
# 1. 创建模型类
# [APP名]/models.py
from django.db import models
class [模型类](models.Model):
name = models.CharField(max_length=100)
# 2. 配置数据库
# [项目名]/settings.py
DATABASES = {
}
# 3. 迁移数据库
python manage.py makemigrations
python mangage.py migrate
# 4. 创建django后台管理员账户
python manage.py createsuperuser
# 5. 在应用admin后台注册模型类
# [APP名]/admin.py
from django.contrib import admin
from .models import [模型类一], [模型类二], [模型类三]
admin.site.register([模型类一])
admin.site.register([模型类二])
admin.site.register([模型类三])
# 6. 配置模型类后台
# APP名/models.py
class 模型类(models.Model):
name = models.CharField(max_length=100)
# 修改后台模型类表单,默认第一个参数为label,外键除外
title = models.CharField('标题', max_length=70)
author = models.ForeignKey(User, verbose_name='作者', on_delete=models.CASCADE)
# 设置模型类后天显示
class Meta:
verbose_name = '分类'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 7. 配置模型类展示信息
# APP名/admin.py
from django.contrib import admin
from .models import Post, Category, Tag
class PostAdmin(admin.ModelAdmin):
# 设置模型类后天列表显示
list_display = ['title', 'created_time', 'modified_time', 'category', 'author']
# 简化后天模型类提交表单
fields = ['title', 'body', 'excerpt', 'category', 'tags']
# 重写save_model方法,自动保存文章作者
def save_model(self, request, obj, form, change):
obj.author = request.user
super().save_model(request, obj, form, change)
# 把新增的 Postadmin 也注册进来
admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)
# 8. 优化其他数据保存方式,如自动添加创建时间到数据库
from django.utils import timezone
class Post(models.Model):
# ...
# 自动保存创建时间
created_time = models.DateTimeField('创建时间', default=timezone.now)
# 重写模型的save()方法,每次修改将自动保存修改时间到数据库
def save(self, *args, **kwargs):
self.modified_time = timezone.now()
super().save(*args, **kwargs)