gpt4 book ai didi

python - 类型错误 : login() got an unexpected keyword argument 'template_name'

转载 作者:行者123 更新时间:2023-12-05 00:58:55 27 4
gpt4 key购买 nike

我将我的项目从 Django 1.11 升级到 2.2,进行了所有更改,但出现了新错误,提示 login() 获得了意外的关键字参数“模板名称”。它与 Django 1.11 的先前版本(所有其他url 正常工作,只有登录页面给出错误)。我找不到任何关于这个问题的引用资料。以下是问题的错误和 url 和 View 。

Internal Server Error: /
Traceback (most recent call last):
File "C:\Users\User\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\User\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\User\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\User\PycharmProjects\MyWebsite\landing\views.py", line 43, in landing_validation
login_response = login(request, template_name='landing.html')
TypeError: login() got an unexpected keyword argument 'template_name'
[19/Apr/2019 16:20:00] "GET / HTTP/1.1" 500 71948

登陆\urls.py

from django.conf.urls import url
from landing.views import landing_validation

app_name='landing'
urlpatterns = [
url(r'^$', landing_validation, name='landing')
]

登陆\views.py

from django.contrib.auth import login 

def landing_validation(request):
login_response = login(request, template_name='landing.html')

return login_response

C:\Users\User\venv\Lib\site-packages\django\contrib\auth__init__.py

def login(request, user, backend=None):

"""
Persist a user id and a backend in the request. This way a user doesn't
have to reauthenticate on every request. Note that data set during
the anonymous session is retained when the user logs in.
"""
session_auth_hash = ''
if user is None:
user = request.user
if hasattr(user, 'get_session_auth_hash'):
session_auth_hash = user.get_session_auth_hash()

if SESSION_KEY in request.session:
if _get_user_session_key(request) != user.pk or (
session_auth_hash and
not constant_time_compare(request.session.get(HASH_SESSION_KEY, ''), session_auth_hash)):
# To avoid reusing another user's session, create a new, empty
# session if the existing session corresponds to a different
# authenticated user.
request.session.flush()
else:
request.session.cycle_key()

try:
backend = backend or user.backend
except AttributeError:
backends = _get_backends(return_tuples=True)
if len(backends) == 1:
_, backend = backends[0]
else:
raise ValueError(
'You have multiple authentication backends configured and '
'therefore must provide the `backend` argument or set the '
'`backend` attribute on the user.'
)
else:
if not isinstance(backend, str):
raise TypeError('backend must be a dotted import path string (got %r).' % backend)

request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
request.session[BACKEND_SESSION_KEY] = backend
request.session[HASH_SESSION_KEY] = session_auth_hash
if hasattr(request, 'user'):
request.user = user
rotate_token(request)
user_logged_in.send(sender=user.__class__, request=request, user=user)

最佳答案

没有必要做一个landing_validation View ,这条线解决了这个问题。

url(r'^$', LoginView.as_view(template_name='landing.html'), name='landing')

关于python - 类型错误 : login() got an unexpected keyword argument 'template_name' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55768131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com