Django 为什么,在通过我自己的视图登录后,用户登录到管理站点而不是我的视图?德扬戈

Django 为什么,在通过我自己的视图登录后,用户登录到管理站点而不是我的视图?德扬戈,django,python-3.x,django-forms,django-views,django-authentication,Django,Python 3.x,Django Forms,Django Views,Django Authentication,我有一种情况,我想检查我的应用程序是否能在生产环境中运行。 当我在本地启动应用程序时,everythink可以工作,但在生产上当我使用我的登录表单时,用户登录到django管理站点,但在我的用户详细信息视图和另一个视图中,在模板中我使用请求。用户我有错误异常。在{%url'%}标记中,NoReverseMatch,因为request.user是None 我想那个用户没有经过身份验证,但为什么 我的表格: class LoginForm(LoginForm): def clean(self

我有一种情况,我想检查我的应用程序是否能在生产环境中运行。 当我在本地启动应用程序时,everythink可以工作,但在生产上当我使用我的登录表单时,用户登录到django管理站点,但在我的用户详细信息视图和另一个视图中,在模板中我使用
请求。用户
我有错误
异常。在
{%url'%}
标记中,NoReverseMatch,因为
request.user
None

我想那个用户没有经过身份验证,但为什么

我的表格:

class LoginForm(LoginForm):
    def clean(self):
        super(LoginForm, self).clean()
        if not self.user.is_active or self.user.is_deleted:
            raise forms.ValidationError(self.error_messages['account_inactive'])
        return self.cleaned_data
我的看法是:

class LoginView(LoginView):
    form_class = LoginForm


login_view = LoginView.as_view()
这里是我的网址:

app_name = "users"
urlpatterns = [
    path("redirect/", view=user_redirect_view, name="redirect"),
    path("<int:pk>/update/", view=user_update_view, name="update"),
    path("change_password", view=user_password_change_view, name="password_change"),
    path("<int:pk>/remove-user", view=user_remove_from_company_view, name="remove_user"),
    path("<int:pk>/update-role", view=profile_update_role, name="update_role"),
    path("<int:pk>/", view=user_detail_view, name="detail"),
    path("sign_up/", view=registration_view, name="registration"),
]

如果对本地设置和生产设置使用不同的
django allauth
,请尝试在本地设置中设置:

ACCOUNT_EMAIL_VERIFICATION = "none"
编辑

阅读新评论后,我还建议检查模板-可能您在某处引用了错误的对象-即,您从一个不存在对象的相关模型调用用户?

几个选项:

  • 您正在为管理员和“您的”视图使用不同的域(包括端口号)。您还可以检查是否设置了
    sessionid
    cookie
  • 或者您没有正确检查权限(@KrystianK请在您的问题中提供示例)
  • 否则,用户属性
    is_staff
    is_superuser
    处于活动状态

用户已在管理员网站上进行身份验证,但未在我的视图上进行身份验证
这意味着什么?抛出它的异常和示例代码是什么?@Michal_Szulc我纠正了这个问题。它是什么意思?本地/生产?您是否清理cookies并尝试在本地登录(或匿名模式)?您是否使用标准django登录或一些外部软件包,如
django allauth
?@MikeBr本地我指的是本地主机,生产我指的是部署在digitalocean上的应用程序。我使用django cookiecutter模板,所以我在digitalocean droplet上使用生产设置运行docker。我使用django-allauth。您的用户详细信息视图是什么?您在浏览器中看到的带有上述错误的url地址是什么?我的用户详细信息视图的url。
ACCOUNT_EMAIL_VERIFICATION = "none"