ユーザーがクリックするのログイン "私は彼らがログインとIEにリダイレクトされるようにしたい、www.exampledomain.com/accounts/usernameGoesHere/NoReverseMatchエラーログイン
後のURLにユーザー名を追加しようとしたときにEDIT :: 私はそうのような空の文字列を受け入れるように、私のURLの正規表現パターンを変更:
url(r'^$|(?P<username>[0-9a-zA-Z._]+)/$', login_required(views.IndexView.as_view()), name = 'index'),
今、私は最初のDjangoの管理者バックエンドにログインするたびに、それが必要としてページのレンダリングhttp://localhost:8000/accounts/FlashBanistan/またはhttp://localhost:8000/accounts/ に移動しますが、まったく同じwユーザー名が途中で失われていると私に伝えています。ここで
私のトップレベルのURLです:
from django.conf.urls import url, include
from django.contrib import admin
# Namespace URLs
app_name = "pto_request"
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^accounts/', include('accounts.urls')),
]
、ここでは、アカウントのURLです:
from django.conf.urls import url
from django.contrib.auth.decorators import login_required
from accounts.views import (login_view, register_view, logout_view)
from . import views
app_name = 'accounts'
urlpatterns = [
# root url will look like www.website.com/accounts/
url(r'^login/$', login_view, name='login'),
url(r'^logout/$', logout_view, name='logout'),
url(r'^register/$', register_view, name='register'),
url(r'^(?P<username>[0-9a-zA-Z._]+)/$', login_required(views.IndexView.as_view()), name = 'index'),
]
は、これは私のログイン図である:
def login_view(request):
title = "Login"
user_form = UserLoginForm(request.POST or None)
if user_form.is_valid():
username = user_form.cleaned_data.get('username')
password = user_form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
login(request, user)
return redirect(reverse('accounts:index', args=[username]))
return render(request, 'form.html', {'user_form':user_form, 'title':title})
これは私のログインですフォーム:
class UserLoginForm(forms.Form):
# Define form fields to include.
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
# Check if user exists and logs in.
def clean(self, *args, **kwargs):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
if username and password:
user = authenticate(username=username, password=password)
if not user:
raise forms.ValidationError('Username or password is incorrect.')
return super(UserLoginForm, self).clean(*args, **kwargs)
、最終的にはこれは私が受けていますエラーのトレースバックログです:
あなたがのアカウント:インデックス 'を使用することができますEnvironment:
Request Method: GET
Request URL: http://localhost:8000/accounts/FlashBanistan/
Django Version: 1.10.5
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'crispy_forms',
'datetimewidget',
'accounts']
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',
'django.middleware.locale.LocaleMiddleware']
Template error:
In template C:\django projects\PTO\accounts\templates\accounts\index.html, error at line 0
Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['accounts/(?P<username>[0-9a-zA-Z._]+)/$'] 1 : {% extends 'base.html' %}
2 : {% load crispy_forms_tags %}
3 :
4 : {% block content %}
5 :
6 : {{ form.media }}
7 :
8 :
9 : <div class="container">
10 : <div id="calendar">
Traceback:
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\exception.py" in inner
39. response = get_response(request)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py" in _get_response
217. response = self.process_exception_by_middleware(e, request)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\handlers\base.py" in _get_response
215. response = response.render()
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\response.py" in render
109. self.content = self.rendered_content
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\response.py" in rendered_content
86. content = template.render(context, self._request)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\backends\django.py" in render
66. return self.template.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render
208. return self._render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in _render
199. return self.nodelist.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render
994. bit = node.render_annotated(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render_annotated
961. return self.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\loader_tags.py" in render
174. return compiled_parent._render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in _render
199. return self.nodelist.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render
994. bit = node.render_annotated(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render_annotated
961. return self.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\defaulttags.py" in render
315. return nodelist.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render
994. bit = node.render_annotated(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\base.py" in render_annotated
961. return self.render(context)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\template\defaulttags.py" in render
439. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\urls\base.py" in reverse
91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "C:\Users\achesley\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
392. (lookup_view_s, args, kwargs, len(patterns), patterns)
Exception Type: NoReverseMatch at /accounts/FlashBanistan/
Exception Value: Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['accounts/(?P<username>[0-9a-zA-Z._]+)/$']
の可能な複製を[NoReverseMatchエラーは何ですかどのように修正すればよいですか?](http://stackoverflow.com/questions/38390177/what-is-a-noreversematch-error-and-how-do-i-fix-it) – Sayse
シェルでは逆の( 'accounts:index'、args = [username])」と表示され、うまくいきます。エラーは生成されません。 – FlashBanistan
あなたはユーザー名をキャプチャするために名前付き正規表現を使用するので、argsの代わりにkwargsを試してください:return redirect(reverse( 'accounts:index'、kwargs = {'username':username})) – Jingo