需求分析
一顿操作
- 新建各种文件夹和apps是包,extra_apps也是包
- setting复制好数据库配置和静态文件配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "message",
'USER': "root",
'PASSWORD': "wbzdwbzda",
'HOST': "127.0.0.1"
}
}
#........
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
os.path.join(BASE_DIR,'apps/message_form/static'),
]
- run manage 来新建app
startapp users
等等 - setting里配置app,
'apps.courses.apps.CoursesConfig',
等等
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'apps.courses.apps.CoursesConfig',
'apps.users.apps.UsersConfig',
'apps.operations.apps.OperationsConfig',
'apps.organizations.apps.OrganizationsConfig',
]
基础表设计
在app的users里编写model
from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
GENDER_CHOICES = ( ("male", "男"), ("female", "女") )
class BaseModel(models.Model):
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
abstract = True
#这是我们自定义的用户表,继承系统原有的字段,但还是得再setting里面去指明
class UserProfile(AbstractUser):
nick_name = models.CharField(max_length=50, verbose_name="昵称", default="")
birthday = models.DateField(verbose_name="生日", null=True, blank=True)
gender = models.CharField(verbose_name="性别", choices=GENDER_CHOICES, max_length=6)
address = models.CharField(max_length=100, verbose_name="地址", default="")
mobile = models.CharField(max_length=11, verbose_name="手机号码")
image = models.ImageField(verbose_name="用户头像", upload_to="head_image/%Y/%m", default="default.jpg")
class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name
def unread_nums(self):
#未读消息数量
return self.usermessage_set.filter(has_read=False).count()
def __str__(self):
if self.nick_name:
return self.nick_name
else:
return self.username
setting里指明
AUTH_USER_MODEL = "users.UserProfile" 因为app已经注册,所以不需要(app.),只需要
后台管理
admin
后台管理系统需要尽量少前端样式,以及达到快速开发的目的。
setting里面把英文调成中文
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
# USE_TZ = True
USE_TZ = False
后面添加数据的时候,如果前面的字段设置了唯一,而后台添加的时候没有这个字段的设置,就会自动默认,这样就会冲突,提交的时候会返回数据库的报错。这个在下面的细节里进行改进。
xadmin
原因:django 3.x 系列删除了six.
解决办法
第一步:安装six
pip3 install six
第二步
把D:\python3.8.2\Lib\site-packages下的six.py拷贝进D:\python3.8.2\Lib\site-packages\django\utils
第三步
from django.utils.encoding import force_text, python_2_unicode_compatible
# 改为
from django.utils.encoding import force_text
from django.utils.six import python_2_unicode_compatible
原文链接:https://blog.csdn.net/weixin_44485643/article/details/104243048
如果需要其他模块配合,最好降级到django==2.2,然后安装好其他模块,比如DjangoUeditor,再启动数据迁移。