【发布时间】:2020-03-22 18:23:36
【问题描述】:
当我在 django 中运行迁移时,终端显示 AttributeError: module 'django.contrib.auth' has no attribute 'models'。我在 django 1.1 中进行讲座,我实际上使用的是 django 2.2。
views.py
def calicutpara(request):
return render(request, 'calicutpara.html')
class signup(CreateView):
form_class = forms.userCreateForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
应用 urls.py
from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.urls import path
from . import views
app_name = 'login'
urlpatterns = [
path('ktupage/', views.ktupage, name='ktupage'),
path('mgcourses/', views.mgcourses, name='mgcourses'),
path('calicutcourses/', views.calicutcourses, name='calicutcourses'),
path('mgcourses/mgaas/', views.mgaas, name='mgaas'),
path('mgcourses/mgpara/', views.mgpara, name='mgpara'),
path('calicutcourses/calicutaas/', views.calicutaas, name='calicutaas'),
path('calicutcourses/calicutpara/', views.calicutpara, name='calicutpara'),
path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(),name='logout'),
path('signup/', views.signup.as_view(),name='signup'),
]
models.py
from django.db import models
from django.contrib import auth
class User(auth.models.User,auth.models.PermissionsMixin):
def __str__(self):
return "@{}".format(self.username)
forms.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class userCreateForm(UserCreationForm):
class Meta:
fields = ('username', 'email', 'password1', 'password2')
model = get_user_model()
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.fields['username'].label = 'Username'
self.fields['email'].label = 'E-mail Address'
【问题讨论】:
-
你不应该这样做。你应该从 AbstractUser 继承,而不是 User,否则你会得到一个额外的 db 表。并确保将 AUTH_USER_MODEL 设置为“yourapp.User”。
-
你能解释一下我应该做些什么改变来让它正确。 settings.py 中的 AUTH_USER_MODEL?
-
我说:继承自 AbstractUser,而不是 User。
标签: django python-3.x django-models