18.TypeError at /admin/1/reset/
Strings must be encoded before hashing Request Method: POST Request URL: Django Version: 4.0 Exception Type: TypeError Exception Value: Strings must be encoded before hashing Exception Location:
原来的代码
import hashlib def md5(data_string): obj = hashlib.md5(settings.SECRET_KEY) obj.update(data_string.encode('utf-8')) return obj.hexdigest()
这个错误表明在对字符串进行哈希处理之前需要先对其进行编码。
Django 的 SECRET_KEY
作为哈希对象的种子(盐),但是在调用 hashlib.md5()
时需要的是字节串(bytes),而不是字符串(str)
因此修改为:
from django.conf import settings import hashlib def md5(data_string): # Ensure SECRET_KEY is encoded to bytes secret_key = settings.SECRET_KEY.encode('utf-8') obj = hashlib.md5(secret_key) obj.update(data_string.encode('utf-8')) return obj.hexdigest()
19.ProgrammingError at /login/
(1146, "Table 'mls.django_session' doesn't exist") Request Method: POST Request URL: Django Version: 4.0 Exception Type: ProgrammingError Exception Value: (1146, "Table 'mls.django_session' doesn't exist")
rm -r app01/migrations/* # 除了 __init__.py 文件 python manage.py makemigrations app01 python manage.py migrate
20.下拉boostrap的下拉菜单没有反应
首先检查复制代码有没有问题
然后目标锁定是引用的问题
<script src="{% static 'js/jquery-3.6.0.min.js' %}"></script> <script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
当时随便找了一个.js文件,复制粘贴了
解决:可以直接在 HTML 文件中引用 jQuery 的公共 CDN。这样不需要手动下载和包含 jQuery 文件
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>