auth.views.Loginview 显示“__init__() 收到意外的关键字参数‘请求’”

2024-02-05

我正在尝试使用内置的 djangosLoginView,但显示错误:

__init__() got an unexpected keyword argument 'request'

批处理簿/用户/urls.py

from django.urls import path
from django.contrib.auth.views import LoginView, LogoutView
from django.shortcuts import reverse
from .forms import LoginForm

app_name = 'user'
urlpatterns = [
    path(
        'login',
        LoginView.as_view(
            authentication_form=LoginForm,
            success_url='/',
            template_name='user/login.html'),
        name='login'),
    path(
        'logout',
        LogoutView.as_view(template_name='user/logout.html'),
        name='logout'),
]

批处理簿/批处理簿/urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include(auth_urls)),
    re_path(
        '^$',
        TemplateView.as_view(template_name='site/index.html'),
        name='index'),
]

forms.py

from django import forms
from .validators import usn_validator

class LoginForm(forms.Form):
    usn = forms.CharField(
        max_length=11,
        validators = (usn_validator,),
        widget = forms.TextInput(attrs={
            'class': 'form-control'
        })
    )
    password = forms.CharField(
        widget=forms.PasswordInput(attrs={
            'class': 'form-control'
        })
    )

验证器.py

usn_validator = RegexValidator(
    regex='^1BM[0-9]{2}[A-Z]{2,3}[0-9]{3}$',
    message='Please enter correct USN',
    code='usn_err'
)

这是错误:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/user/login

Django Version: 2.0.5
Python Version: 3.6.6
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'user']
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:

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\core\handlers\exception.py" in inner
  35.             response = get_response(request)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\core\handlers\base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\generic\base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in _wrapper
  62.             return bound_func(*args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\decorators\debug.py" in sensitive_post_parameters_wrapper
  76.             return view(request, *args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in bound_func
  58.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in _wrapper
  62.             return bound_func(*args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in bound_func
  58.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in _wrapper
  62.             return bound_func(*args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\utils\decorators.py" in bound_func
  58.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\contrib\auth\views.py" in dispatch
  66.         return super().dispatch(request, *args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\generic\base.py" in dispatch
  89.         return handler(request, *args, **kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\generic\edit.py" in get
  133.         return self.render_to_response(self.get_context_data())

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\contrib\auth\views.py" in get_context_data
  99.         context = super().get_context_data(**kwargs)

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\generic\edit.py" in get_context_data
  66.             kwargs['form'] = self.get_form()

File "C:\Users\bhask\Miniconda3\envs\batchbook\lib\site-packages\django\views\generic\edit.py" in get_form
  33.         return form_class(**self.get_form_kwargs())

Exception Type: TypeError at /user/login
Exception Value: __init__() got an unexpected keyword argument 'request'

显然,LoginView使用 djangosAuthenticationForm https://docs.djangoproject.com/en/1.11/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm作为其默认值。该表格的文档说:

Takes request作为它的第一个位置参数,...

这意味着LoginView将传递request作为您表格的参数。 Django 的默认值forms.Form没想到(看源码here https://docs.djangoproject.com/en/2.0/_modules/django/forms/forms/#BaseForm).

所以你可以尝试覆盖你的__init__()允许额外参数的方法:

class LoginForm(forms.Form):
    usn = forms.CharField...
    password = forms.CharField...

    def __init__(self, request, *args, **kwargs):
        # simply do not pass 'request' to the parent
        super().__init__(*args, **kwargs)

让我们知道事情进展如何。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

auth.views.Loginview 显示“__init__() 收到意外的关键字参数‘请求’” 的相关文章

随机推荐

  • Composer create-project 在本地包存储库上失败

    我正在尝试创建一个local存储库来测试作曲家项目 但是 composer create project repository url path to packages json vendor project name 失败了 Unexpe
  • 如何重新排列 igraph 图中边的顺序?

    我正在尝试在 igraph 中制作一个网络图 通过对某些重要边缘进行不同的着色来突出显示某些重要边缘 对于大图 它们经常被埋在其他图下面 例如 library igraph test lt barabasi game 200 m 2 E t
  • 通过 URL 哈希链接触发打开 Zurb Foundation Accordion

    我真的很希望能够通过问题散列中带有手风琴窗格的 URL 激活 打开 Zurb 基金会手风琴 就像 example com page accordion1 Foundation 已经可以做到这一点吗 或者是否很容易实现 老实说我没有任何线索
  • Eclipse 中的块选择

    有谁知道在 Eclipse 中是否可以进行块选择 或矩形选择 也许有插件 我自己还没找到 从 Eclipse 3 5 开始可以进行块选择 您可以使用以下方法在标准选择和块选择之间切换 Alt Shift A Opt Cmd A on Mac
  • 动态地从 Reveal.JS 添加/删除幻灯片

    使用 Reveal js 运行演示文稿时是否可以添加 删除幻灯片 准确地说 是否有一个 API 可以实现这一点 或者可能有一些肮脏的解决方法 我对即将到来的项目也对此感到好奇 环顾四周 找不到任何东西 所以我为自己的项目写了一些东西 附加在
  • 将字节数组转换为 POD

    比方说 我有一个无符号字符数组 代表一堆 POD 对象 例如 从套接字或通过 mmap 读取 它们代表哪些类型以及在什么位置是在运行时确定的 但我们假设每个类型都已经正确对齐 将这些字节 转换 为相应 POD 类型的最佳方法是什么 解决方案
  • SQL/C# - 执行查询的最佳方法

    我需要从 C 类中执行 sql 查询 我想到了2个选择 启动sqlcmd进程 使用 SqlCommand 对象 我的问题是哪种方法更好 重要的是 该解决方案只能在短时间内保持与服务器的连接 如果上述想法不好 我愿意接受其他想法 提前致谢 使
  • select 的 Angular ng-change 不调用声明的方法

    我有以下 html 表单选择语句
  • 将 C# MethodInvoker.Invoke() 用于 GUI 应用程序...这样好吗?

    使用 C 2 0 和 MethodInvoker 委托 我有一个 GUI 应用程序从 GUI 线程或工作线程接收一些事件 我使用以下模式来处理表单中的事件 private void SomeEventHandler object sende
  • 错误:Angular2 中没有 HttpHandler 的提供者

    我正在尝试通过拦截器实现 HttpCache 以下是caching interceptor service ts import HttpRequest HttpResponse HttpInterceptor HttpHandler Htt
  • Linux 中的 Eclipse Luna UI 渲染

    我在 Fedora 19 中安装了 Eclipse Luna 并面临以下问题 与 Windows 安装相比 选项卡标题似乎很大 我在主目录中搜索并编辑了 gtkrc 2 0 文件 这使得选项卡更小 但我使用高对比度外观而不是 GTK 来获得
  • 提交时显示“您的二进制文件未针对 iPhone 5 进行优化”(ITMS-90096)

    这是我的第一个 iOS 应用程序 当我尝试将其提交到应用程序商店时 它给了我 ITMS 90096 错误 我想我已经上传了所有正确的图标和启动画面图像 它提到了 iphone 5 上 4 英寸显示屏的启动图像 但我不知道在哪里添加它 这是我
  • 如何将 Base64 字符串保存到文件并使用 Flutter 查看它

    我需要使用 Flutter 下载并查看文件 如果可能的话 图像 PDF 等 我的问题是 我要下载的文件是 Base64 String 我如何使用 Flutter 来实现这一点 以下是解码 Base64 字符串并将其保存为本地设备上的文件的代
  • Xcode 6 - 如何为 Ad-Hoc 分发选择签名证书/配置文件?

    为了将应用程序分发给我们的测试人员 我们使用 Xcode 我们使用以下过程来执行此操作 归档申请 临时分发 选择配置文件 将 ipa 保存到文件夹 但与Xcode 6 这个工作流程发生了一些变化 我仍然可以选择 Ad Hoc 分发选项 但无
  • 在chrome中将html保存为pdf

    我在用rmarkdown生成 HTML 报告 我在受限制的机器上 无法安装 tex 所以 我试图生成一个 HTML 文档 然后将其转换 打印为 pdf 示例 Markdown 文档是 title trials author Foo Bar
  • ubuntu 上的 Rscript

    我可以从哪里安装 Rscript 我需要使用 exec 从 php 文件运行 R 脚本 不过我需要先安装 Rscript R 的主包称为r base https packages ubuntu com search keywords r b
  • CSS/HTML:如何在全页 JS 上自定义箭头?

    我正在使用全页 JShttps github com alvarotrigo fullPage js https github com alvarotrigo fullPage js 制作我的网站 但是 当尝试更改箭头样式时 control
  • 使用 SQL 查询根据值复制和拆分行?

    我有一组数据 想要根据列值拆分多行 例如 源数据 预期输出 谢谢 劳伦斯A 解决上述问题的最佳且简单的方法是 SELECT value AS UID NAME Age Education Department FROM StackSoln
  • 将 TabControl 绑定到枚举

    我需要将所有枚举值显示为 TabControl 上的选项卡项 除了一个枚举成员 无 enum MyEnum Value1 Value2 Value3 None TabControl 应显示三个选项卡 Value1 Value2 和 Valu
  • auth.views.Loginview 显示“__init__() 收到意外的关键字参数‘请求’”

    我正在尝试使用内置的 djangosLoginView 但显示错误 init got an unexpected keyword argument request 批处理簿 用户 urls py from django urls impor