1

当我转到“ http://127.0.0.1:8000/restaurant/sign-in/ ”时,出现找不到页面(404)错误。但是我可以去“ http://127.0.0.1:8000/restaurant/$ ”访问主页。

我还尝试了“ http://127.0.0.1:8000/restaurant/sign-in/$ ”,但这也给了我错误(init() 需要 1 个位置参数,但给出了 2 个)。

我的 urls.py 是

from django.contrib import admin
from django.urls import path
from foodtaskerapp import views
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('restaurant/sign-in/$', auth_views.LoginView,
         {'template_name': 'restaurant/sign_in.html'},
         name='restaurant-sign-in'),
    path('restaurant/sign-out', auth_views.LogoutView,
         {'next_page': '/'},
         name='restaurant-sign-out'),
    path('restaurant/$', views.restaurant_home, name='restaurant- 
         home'),
]

我的views.py是

from django.shortcuts import render, redirect

def home(request):
    return redirect(restaurant_home)

def restaurant_home(request):
    return render(request, 'restaurant/home.html', {})

这是错误的屏幕截图

我也有

<body>
    <form method="POST">
        {% csrf_token %}
        {{ form }}
        <button type="submit">Sign In</button>
    </form>
</body>

在 sign_in.html 但表单不显示,只显示登录。 只显示符号但不显示表格

4

2 回答 2

3

您正在使用的函数的语法在最新版本的 django 中发生了更改,这就是您收到该错误的原因(您共享的代码在 code4startups 使用旧版本 django 制作的教程中)。您应该将路径命令修改为:

path('restaurant/sign-in/', auth_views.LoginView.as_view(
       template_name='restaurant/sign_in.html'),
       name='restaurant-sign-in'),
于 2020-05-03T07:51:46.660 回答
2

您在views.py 中没有相应的功能:
auth_views.LoginView
另外,我猜您也没有'restaurant/sign_in.html',所以它不会重定向到页面。


在views.py中添加:

def restaurant_signIn(request):
    return render(request, 'restaurant/sign_in.html')

以及对应的 HTML 页面名称:'sign_in.html',在餐厅目录中:

<p>SigninWorks</p>


您的 urls.py 必须如下所示:

from django.contrib import admin
from django.urls import path
from foodtaskerapp import views
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('restaurant/sign-in/', views.restaurant_signIn,
         name='restaurant-sign-in'),
    path('restaurant/$', views.restaurant_home, name='restaurant- 
         home'),
]
于 2019-05-05T06:28:40.393 回答