404找不到页面“GET / accounts / login /?next = / profile / HTTP / 1.1”404

问题描述 投票:0回答:1

我的网址有些问题。我没有任何“帐户/”路线,但是当我想访问“登录/”时,我登录后应该将我重定向到我的个人资料......但它带我走这条路:“http://127.0.0.1:8000/accounts/login/?next=/profile/

如果我发布了任何不必要的东西,我很抱歉:

Minppkurls

from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.urls import path, include
from forms.views import RegisterView,LoginView
from django.conf import settings
from django.conf.urls.static import static
from user_profile import views as profile_views
from blog import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('register/',RegisterView.as_view(), name='register'),
    path('login/', LoginView.as_view(), name = 'login'),
    path('profile/',profile_views.profile,name='profile'),
 path('updateprofile/',profile_views.updateprofile,name='update_profile'),
    path('',include('blog.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, 
    document_root=settings.MEDIA_ROOT)

forms.views(登录/注销)查看

from django.shortcuts import render, redirect,reverse
from django.http import HttpResponse
from django.contrib.auth import authenticate, get_user_model, logout
from django.utils.http import is_safe_url
from django.contrib.auth.decorators import login_required
from django.views.generic import CreateView, FormView
from .models import User
from .forms import RegisterForm,LoginForm 

class LoginView(FormView):
    form_class = LoginForm #instance
    template_name = 'forms/login.html'
    success_url = '/profile/' 
def User_logout(request):
    if request.method == "POST":
        logout(request)
    return redirect(reverse('login'))   

登录表单:

class LoginForm(forms.Form):
email = forms.EmailField(label='email')
password = forms.CharField(widget=forms.PasswordInput)

def form_valid(self,form):
    request=self.request
    next_=request.GET.get('next')
    next_post=request.POST.get('next')
    redirect_path=next_ or next_post or None
    email=form.cleaned_data.get('email')
    password=form.cleaned_data.get('password')
    user=authenticate(username=email, password=password)
    if user is not None:
        login(request, user)
        try:
            del request.session['UserProfile.html']
        except:
            pass
        if is_safe_url(redirect_path, request.get_host()):
            return redirect(redirect_path)
        else:
            return redirect("login")
    return super(LoginView, self).form_invalid(form)
python django django-2.0
1个回答
0
投票

在你mainapp的urls.py中设置一个变量,如下所示

appname='mainapp'

现在在登录视图中添加以下内容

def get_success_url(self):
    return reverse('mainapp:profile')
© www.soinside.com 2019 - 2024. All rights reserved.