我正在關注 Telusko 的教程。他切換到 PostgreSQL,但我決定繼續使用 SQLite。他展示了將用戶添加到資料庫的代碼:
def register(request):
if request.method == "POST":
firstname= request.POST['firstname']
lastname= request.POST['lastname']
email= request.POST['email']
phone= request.POST['phone']
username= request.POST['username']
password1= request.POST['password1']
password2= request.POST['password2']
dob= request.POST['dob']
gender= request.POST['gender']
user = User.objects.create_user(username=username, email=email, phone=phone, password=password1, dob=dob, gender=gender, firstname=firstname, lastname=lastname,)
user.save();
print('user created')
return redirect("/")
else:
return render(request, 'register.html') ;
但是當我提交時出現此錯誤:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/register
Django Version: 4.1.3
Python Version: 3.11.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'login.apps.LoginConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Users\yuri\Desktop\naisuback\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\yuri\Desktop\naisuback\venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\yuri\Desktop\naisuback\login\views.py", line 30, in register
user = User.objects.create_user(username=username, email=email, phone=phone, password=password1, dob=dob, gender=gender, firstname=firstname, lastname=lastname,)
Exception Type: AttributeError at /register
Exception Value: 'Manager' object has no attribute 'create_user'
我希望我可以在我的 HTML 表單(配置正確)中輸入資訊,并使用 POST 方法將其發送到資料庫,添加一個新用戶。當我運行服務器時,我的資料庫 db.sqlite3 會自動打開。
我有一個表login_user,其中已經有 2 個我通過管理面板添加的用戶。
uj5u.com熱心網友回復:
您必須使用 django 的 default ModelManager,它沒有 create_user 方法。您需要從AbstractBaseUser模型中的 class 而不是 models.Model繼承User并添加objects = UserManager()到模型中,如下所示:
from django.contrib.auth.models import AbstractBaseUser, UserManager
class User(AbstractBaseUser):
...
objects = UserManager()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/528242.html
標籤:Pythondjangosqlite邮政django-views
下一篇:如何將CSV檔案匯入附加資料庫?
