我注意到登录后我的网址不正确。我该怎么做呢?
当前输出网址:
http://127.0.0.1:8000/login_user/
正确的输出网址必须是:
我怎样才能做到这一点?
的login.html:
<form class="form-horizontal" role="form" action="{% url 'ksvt:login_user'%}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<label class="control-label col-sm-2" for="id_username">
Username:
</label>
<div class="col-sm-10">
<input id="id_username" maxlength="30" name="username" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="id_password">
Password:
</label>
<div class="col-sm-10">
<input id="id_password" maxlength="30" name="password" type="password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</form>
urls.py
from django.conf.urls import url
from . import views
app_name = 'ksvt'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^register/$', views.register, name='register'),
url(r'^login_user/$', views.LoginView.as_view(), name='login_user'),
url(r'^logout_user/$', views.LogoutView.as_view(), name='logout_user'),
]
views.py
class LoginView(TemplateView):
template_name = 'ksvt/index.html'
def post(self, request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
locations = Location.objects.all()
return render(request, self.template_name, {'locations': locations})
else:
return render(request, self.template_name, {'error_message': 'Your account has been disabled'})
else:
return render(request, 'ksvt/login.html', {'error_message': 'Invalid login'})
答案 0 :(得分:2)
您只是在渲染中更改模板,这不会将您重定向到索引页面。要更改URL,如果用户已通过身份验证,则需要在视图中返回redirect
对象:
if user is not None:
if user.is_active:
login(request, user)
return redirect('index')