Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么可以';在尝试向Django注册用户时,我是否可以访问我的模板视图?_Python_Django_Django Login - Fatal编程技术网

Python 为什么可以';在尝试向Django注册用户时,我是否可以访问我的模板视图?

Python 为什么可以';在尝试向Django注册用户时,我是否可以访问我的模板视图?,python,django,django-login,Python,Django,Django Login,我试图实现一个小Django项目的登录功能,但是当我使用signup/signin表单进入页面时,我得到了404错误。我使用的是Django默认用户模型和auth表单 意见如下: def signup(request): if request.user.is_authenticated: return redirect('/') if request.method == 'POST': form = UserCreationForm(request

我试图实现一个小Django项目的登录功能,但是当我使用signup/signin表单进入页面时,我得到了404错误。我使用的是Django默认用户模型和auth表单

意见如下:

def signup(request):
    if request.user.is_authenticated:
        return redirect('/')
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=password)
            login(request, user)
            return redirect('/')
        else:
            return render(request, 'signup.html', {'form': form})
    else:
        form = UserCreationForm()
        return render(request, 'signup.html', {'form': form})


def signin(request):
    if request.user.is_authenticated:
        return render(request, 'homepage.html')
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('/')
        else:
            form = AuthenticationForm(request.POST)
            return render(request, 'signin.html', {'form': form})
    else:
        form = AuthenticationForm()
        return render(request, 'signin.html', {'form': form})


def log_out(request):
    logout(request)
    return redirect('/')
以下是我的视图的URL:

urlpatterns = [
    path('', views.PostList.as_view(), name='home'),
    path('<slug:slug>/', views.post_detail, name='post_detail'),
    path('signup/', views.signup, name='register'),
    path('signin/', views.signin, name='signup'),
    path('log_out/', views.log_out, name='log_out'),
]
完整错误消息:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/signin/
Raised by:  blog_backend.views.post_detail
No Post matches the given query.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
或者切换URL模式的顺序,以便验证URL首先匹配:

path('signup/', views.signup, name='register'),
path('signin/', views.signin, name='signup'),
path('log_out/', views.log_out, name='log_out'),
path('<slug:slug>/', views.post_detail, name='post_detail'),
path('signup/',views.signup,name='register'),
路径('signin/',views.signin,name='signup'),
路径('log_out/',views.log_out,name='log_out'),
路径(“/”,views.post_detail,name='post_detail'),

猜测一下,将urlpattern改为“/”而不是空字符串有时会导致404。哪个URL为404?请包含完整的错误消息-它应该显示Django尝试的URL模式。@erfanehtesham主URL工作正常,我遇到问题的是验证URL。@Alasdair发布了完整的错误消息,没有显示Django尝试的模式,只有404,我在某个地方读到,默认django日志的模板应该位于不同的目录中,也许这就是问题所在?
视图。post_detail
是错误消息中的视图,因此在URL中显示它的使用位置非常重要!
path('<slug:slug>/', views.post_detail, name='post_detail'),
path('signup/', views.signup, name='register'),
path('blog/<slug:slug>/', views.post_detail, name='post_detail'),
path('signup/', views.signup, name='register'),
path('signup/', views.signup, name='register'),
path('signin/', views.signin, name='signup'),
path('log_out/', views.log_out, name='log_out'),
path('<slug:slug>/', views.post_detail, name='post_detail'),