【发布时间】:2020-02-26 00:58:48
【问题描述】:
您好,我一直在尝试为我的用户创建客户网址,但它不起作用。我不断收到 NoReverseMatchError
这是我的 user_login views.py
def user_login(request):
'''
Using different method for getting username, tried this and didnt work either
'''
#if request.user.is_authenticated():
#return HttpResponseRedirect('main:home')
if request.method == 'POST':
form = AuthenticationForm(request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request,user)
messages.info(request, "Successfully signed in")
return HttpResponseRedirect('home')
#return HttpResponseRedirect(reverse('main:home', kwargs={'username': username}))
else:
message = 'Sorry, the username or password you entered is not valid please try again.'
return render(request, 'login.html', {'message':message})
else:
message = 'Sorry, the username or password you entered is not valid please try again.'
return render(request, 'login.html', {'message':message})
这是我登录 login.html 的表单
<form method="POST" action="{%url 'main:home' user.username %}" class="form-signin">
这是我的“家”视图
def home(request, username):
username = request.user.get_username()
return render(request,'home.html')
这是我在 myapp/urls.py 的 url 路径
path('home/<username>', views.home, name='home'),
这是 LOGIN_REDIRECT_URL
LOGIN_REDIRECT_URL = '/main/home'
我正在尝试获取 mysite.com/home/myusername,但它给了我一个 NoReverseMarch 错误
错误:
NoReverseMatch at /main/
Reverse for 'home' with arguments '('',)' not found. 1 pattern(s) tried: ['main/home/(?P<username>[^/]+)$']
我错过了什么吗?
【问题讨论】:
-
您可以尝试渲染
user.username的值并检查它是否不是空字符串吗?
标签: python django django-views django-login