重定向时Django无法找到模式名称

我在django项目上工作,我使用AbstractUser模型将默认django用户模型修改为员工模型。重定向时Django无法找到模式名称

现在,在他们第一次登录时,我需要重定向员工以更改密码页面,该页面是在EmployeeAdmin - get_urls方法中定义的Url。也覆盖默认登录行为,我不得不重写默认AdminSite如下图所示:

admin.py

class MyAdminSite(AdminSite): 

login_form = AdminLoginForm

admin_site = HRMSAdminSite(name='My-admin')

@admin.register(Employee, site=admin_site)

class EmployeeAdmin(admin.ModelAdmin):

def get_urls(self):

return [

path(

'<id>/password/',

self.admin_site.admin_view(self.user_change_password),

name='auth_user_password_change',

),

] + super().get_urls()

def user_change_password(self, request, id, form_url=''):

pass

而且我AdminLoginForm我检查的用户第一次登录:

forms.py

class AdminLoginForm(AuthenticationForm): 

def confirm_login_allowed(self, user):

# user.last_login is blank if this is first login for this user

if not user.last_login:

return redirect('auth_user_password_change')

然而,在运行时,一博韦代码我得到以下错误:

找不到'auth_user_password_change'。 'auth_user_password_change'不是有效的视图函数或模式名称。

我不知道为什么django无法找到命名的网址,即在EmployeeAdmin的get_urls()方法内定义的。

回答:

由于您要将URL添加到模型管理员类,所以需要包含admin命名空间才能将其反转。

return redirect('admin:auth_user_password_change') 

以上是 重定向时Django无法找到模式名称 的全部内容, 来源链接: utcz.com/qa/262409.html

回到顶部