You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Django LoginView登录时出现ImportError: 'd'非模块路径问题求助

Django LoginView 提交时出现"d doesn't look like a module path"错误的解决方案

问题描述

使用django.contrib.auth的LoginView搭建登录页面,点击登录提交按钮时触发ImportError,错误提示:

ImportError at /user/login
"d doesn't look like a module path"

登出视图可正常运行,仅登录提交环节出错。已在settings.py中配置:

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend'
)

LOGIN_URL = 'user/login'

相关代码如下:

urls.py

from django.urls import path
from . import views
from django.contrib.auth import views as auth_views

urlpatterns = [
    path("register", views.register_request, name="register"),
    path("login", auth_views.LoginView.as_view(template_name="user/login.html"), name="login"),
    path("logout", auth_views.LogoutView.as_view(template_name="user/logout.html"), name="logout")
]

login.html

{% extends "base/base.html" %}
{% load crispy_forms_filters %}

{% load crispy_forms_tags %}

{% block content %}
    <div class="content-section">
        <form method="POST" >
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Log In</legend>
                    {{ form|crispy }}

            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Login</button>
            </div>
        </form>
        <div class="border-top pt-3">
            <small class="text-muted">
                Need An Account? <a class="ml-2" href="{% url 'register' %}">Sign Up Now</a>
            </small><br>
            <small class="text-muted">
                <a href="/">Forgot password?</a>
            </small>
        </div>
    </div>
{% endblock content %}

原因分析

错误核心在于settings.py中AUTHENTICATION_BACKENDS的配置错误:

  • 你将其定义为元组,但最后一个元素末尾未添加逗号,Python会将这个结构解析为单个字符串而非元组。
  • Django处理认证后端时会迭代该配置,遍历字符串的每个字符,第一个字符'd'被误认为是认证后端的模块路径,从而抛出错误。

解决方案

1. 修复认证后端配置

在settings.py中,给AUTHENTICATION_BACKENDS的元组元素末尾添加逗号,确保Python将其识别为元组:

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',  # 添加逗号
)

2. 优化LOGIN_URL配置(推荐)

LOGIN_URL建议使用命名URL格式,避免硬编码路径带来的维护问题:

LOGIN_URL = 'login'  # 对应urls.py中name="login"的路径

3. 配置登录成功跳转路径(可选)

默认情况下,LoginView登录成功后会跳转到/accounts/profile/,若该路径未配置可自定义跳转目标:
在urls.py中修改LoginView配置:

# 直接指定路径
path("login", auth_views.LoginView.as_view(
    template_name="user/login.html",
    success_url="/"  # 替换为你的首页或目标路径
), name="login"),

# 或使用命名URL(需提前导入reverse_lazy)
from django.urls import reverse_lazy

path("login", auth_views.LoginView.as_view(
    template_name="user/login.html",
    success_url=reverse_lazy("home")  # 假设存在name="home"的路径
), name="login"),

验证步骤

  1. 保存修改后的settings.py和urls.py
  2. 重启Django开发服务器
  3. 重新尝试登录,确认错误是否解决

内容的提问来源于stack exchange,提问作者Franciso Reyna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:25:15