Django NoReverseMatch(与用户登录相反,未找到)
我有一个名为log的django项目和一个名为basic_app的应用程序。我创建了一个注册表单,但当我想创建一个用户登录时,我遇到以下错误: NoReverseMatch at/basic\应用程序/用户\登录/ 找不到“用户登录”的反向项用户_login'不是有效的视图函数或模式名称 views.py:Django NoReverseMatch(与用户登录相反,未找到),django,login,django-forms,django-urls,Django,Login,Django Forms,Django Urls,我有一个名为log的django项目和一个名为basic_app的应用程序。我创建了一个注册表单,但当我想创建一个用户登录时,我遇到以下错误: NoReverseMatch at/basic\应用程序/用户\登录/ 找不到“用户登录”的反向项用户_login'不是有效的视图函数或模式名称 views.py: from django.shortcuts import render from basic_app.forms import UserForm, UserProfileInfoForm f
from django.shortcuts import render
from basic_app.forms import UserForm, UserProfileInfoForm
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
# Create your views here.
def index(request):
return render(request, 'basic_app/index.html')
@login_required
def special(request):
return HttpResponse('You are loged in!')
@login_required
def user_logout(request):
logout(request)
return HttpResponseRedirect(reverse('index'))
def register(request):
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileInfoForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
if 'profile_pic' in request.FILES:
profile.profile_pic = request.FILES[
'profile_pic'
]
profile.save()
registered = True
else:
print(user_form.errors, profile_form.errors)
else:
user_form = UserForm()
profile_form = UserProfileInfoForm()
return render(request, 'basic_app/registration.html',
{'user_form':user_form,
'profile_form':profile_form,
'registered':registered})
def user_login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username = username, password = password)
if user:
if user.is_active:
login(request, user)
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse('Account Not Active.')
else:
print('Someone tried to login and failed!')
print('username:{} and password:{}'.format(username, password))
return HttpResponse('invalid login details supplied!')
else:
return render(request, 'basic_app/login.html',{})
基本应用程序/url.py:
from django.conf.urls import url
from basic_app import views
#TEMPLATE URLS
app_name = 'basic_app'
urlpatterns = [
url(r'^register/$', views.register, name='register'),
url(r'^user_login/$', views.user_login, name='user_login'),
log/url.py:
from django.conf.urls import url, include
from django.contrib import admin
from basic_app import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^admin/', admin.site.urls),
url(r'^basic_app/', include('basic_app.urls')),
url(r'^logout/$', views.user_logout, name='logout'),
url(r'special/', views.special, name='special')
login.html:
{% extends 'basic_app/basic.html' %}
{% block body_block %}
<div class="jumbotron">
<h1>Please Login: </h1>
<form action="{% url 'basic_app: user_login' %}" method="post">
{% csrf_token %}
<label for="username">Username:</label>
<input type="text" name="username" placeholder="Enter Username">
<label for="passwrod">Password:</label>
<input type="password" name="password">
<input type="submit" name="" value="Login">
</form>
</div>
{% endblock %}
{%extends'basic\u app/basic.html%}
{%block body_block%}
请登录:
{%csrf_令牌%}
用户名:
密码:
{%endblock%}
在{%url'basic\u app:user\u login%%}
中尝试删除用户登录名前面的空格
非常感谢Yusef。问题解决了!