为什么我的URL没有更改为我的渲染模板名称?

时间:2018-03-07 07:45:09

标签: django django-templates django-views

我注意到登录后我的网址不正确。我该怎么做呢?

当前输出网址:

http://127.0.0.1:8000/login_user/

正确的输出网址必须是:

http://127.0.0.1:8000/

我怎样才能做到这一点?

的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'})

1 个答案:

答案 0 :(得分:2)

您只是在渲染中更改模板,这不会将您重定向到索引页面。要更改URL,如果用户已通过身份验证,则需要在视图中返回redirect对象:

if user is not None:
    if user.is_active:
        login(request, user)
        return redirect('index')
相关问题