admin站点输入数据
在django使用admin管理员的时候出现如下错误
Please enter the correct username and password for a staff account.
Note that both fields may be case-sensitive.
原因有 2 个:
1、没有这个用户
2、Django在使用默认的认证系统进行登录校验的时候authenticate函数会连同数据库里面的is_active一起验证,
这样的我们这么写的代码就会有问题
user=authenticate(username=username,password=password)
if user:
if user.is_active:
login(request,user)
return redirect(reverse('goods:index'))
else:
return render(request,"login.html",{
"errmsg":"用户未激活"})
else:
return render(request,"login.html",{
"errmsg":"用户名或者密码错误"})
解决方法有 3 个:
1、python manage.py createsuperuser
2、清空数据库,此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。
python manage.py flush
python manage.py createsuperuser
3、进入mysql,修改 auth_user 这张表:is_active 原来为0 (No),改为1 (yes) 就行了
insert into auth_user(is_active) values('yes');
4、让 if user.is_active:段代码任何情况下都不会被执行
解决方法:
在 settings.py 文件里加上下面的配置就行
不会检测用户的活跃状态
AUTHENTICATION_BACKENDS = [‘django.contrib.auth.backends.AllowAllUsersModelBackend’]
如果要在 admin 站点显示自己的表,需要在 admin.py 添加:
from 子应用 import models
admin.site.register(models.BookInfo)
admin.site.register(models.PeopleInfo)
在 django 2.2.5 版本中,在 settings.py 里导入模块,必须在 SECRET_KEY 的下面,否则会抛出异常:
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Django, admin 站点页面,中文名称会自动加s (没有 plural 会自动加 s),要去掉s :
class BookInfo(models.Model):
name = models.CharField(max_length=10, unique=True, verbose_name='书名')
class Meta:
db_table = 'bookinfo'
# verbose_name = '图书'
verbose_name_plural = '图书'
def __str__(self):
# 定义每个数据对象的显示信息
return self.name
课程需要在 mysql 录入一些数据,老师的是在 mysql 里面语句录入的,
但是我没有文档,需要自己敲字,因为内容太多,所以,我想在 admin 站点里面添加数据。
结果报错:
1267, "Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE