创建后台管理账号

1
python manage.py createsuperuser

注册模型类

1
2
3
4
# admin.py
from .models import <Model>
admin.site.register(<Model>)
# 会按照__str__显示数据

模型管理器

1
2
3
4
5
6
7
8
9
10
11
12
13
# admin.py
class ModelManager(admin.ModelAdmnin):
# 以列名展示
list_display = [col1, col2, ...]
# 控制字段link
list_display_links = [col1, col2, ...]
# 过滤器
list_filter = [col1, col2, ...]
# 搜索(模糊查询)
search_fields = [col1, col2, ...]
# 列表页编辑 与link互斥
list_editable = [col1, col2, ...]
admin.site.register(<Model>, ModelManager)

模型操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from django.contrib.auth.models import User
user = User.objects.create_user() # 创建用户
superuser = User.objects.create_superuser() # 创建超级用户

from django.contrib.auth import authenticate
user = authenticate(username=username,password=password) -> User | None

user.set_password() # 修改密码

# view.py
from django.contrib.auth import login
login(request, user) # 登录保持
logout(request) # 登录状态取消

from django.contrib.auth.decorators import login_required
@login_required
def view(request):
login_user = request.user

扩展字段

  • 需要在第一次migrate前进行
  • 添加新的应用
  • 定义模型类继承AbstractUser
  • setting.py中指明AUTH_USER_MODEL = ‘应用名.类名’
1
2
3
4
5
6
7
8
9
10
from django.conrtrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
attr = models.CharField()

# setting.py
AUTH_USER_MODEL = 'user.UserInfo'

# 使用
from user.models import UserInfo
UserInfo.objects.create_user()

发送邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# setting.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxx@qq.com'
EMAIL_HOST_PASSWORD = '******'
# EMAIL_USE_TLS = False

from django.core import mail
mail.send_mail(
subject='标题',
message='内容',
from_email='xxx@qq.com',
recipient_list=['xxx@qq.com ']
)