django - Django:找不到''的反向。'' 不是有效的视图函数或模式名称
问题描述
我正在做一个入门级项目,我遇到了这个问题。 项目的 urls.py:
urlpatterns = [
path('', TemplateView.as_view(template_name='welcome.html'), name='welcome'),
path('accounts/', include('login.urls')),
path('accounts/', include('django.contrib.auth.urls')), # use auth app
path('ride_sharing/', include('ride.urls')),
path('admin/', admin.site.urls),
]
骑行应用程序的 urls.py:
app_name = 'ride'
urlpatterns = [
path('', views.home, name='home'),
path('requests/', views.view_requests, name='view_requests'),
path('new-request/', views.request_new, name='request_new'),
path('driver/', views.driver_home, name='driver_home'),
path('new-share-request/', views.sharer_request_new, name='sharer_request_new'),
]
乘车应用程序的views.py,只是不完整的代码:
def home(request):
return render(request,'ride/home.html')
def view_requests(request):
return render(request, 'ride/home.html')
def request_new(request):
return render(request, 'ride/home.html')
def driver_home(request):
return render(request, 'ride/home.html')
def sharer_request_new(request):
return render(request, 'ride/home.html')
和home.html:
<!-- ride/templates/ride/home.html -->
{% extends 'ride/base.html' %}
{% block title %}HOmeeeeeeeeeee {% endblock %}
{% block content %}
{% if user.is_authenticated %}
Hi {{ user.username }}
<p><a href="{% url 'ride:view_requests' %}">View My Requests</a></p>
<p><a href="{% url 'ride:request_new' %}">Request a Ride</a></p>
<p><a href="{% url 'ride:driver_home' %}">Driver Entrance</a></p>
<p><a href="{% url 'ride:sharer_request_new' %}"></a></p>
<p><a href="{% url 'logout' %}">Logout</a></p>
{% else %}
<p>Welcome to CJ & XY's Ride Sharing Service!</p>
<a href="{% url 'login' %}">login</a> |
<a href="{% url 'login:signup' %}">signup</a>
{% endif %}
{% endblock %}
但是在我登录后(我让 LOGIN_REDIRECT_URL = 'home'),我得到:
NoReverseMatch at /ride_sharing/
Reverse for 'view_requests' not found. 'view_requests' is not a valid view function or pattern name.
这怎么可能发生?有人能给我钥匙吗?太感谢了!
解决方案
我发现您的网址有两个问题。首先,当你包含一个 app.urls 文件时,你应该给它一个命名空间。这允许反向找到 urls.py 文件的正确位置,并使您的生活更轻松。您的包含 URL 应如下所示。
path('ride_sharing/', include('ride.urls', namespace="ride")),
第二个问题是您没有为您的LOGIN_REDIRECT_URL = "ride:home"
那么你应该很高兴。
推荐阅读
- javascript - NetSuite Suitelet 未选择 Shopify Webhook
- idris - Idris:有没有办法在等式证明中引用抽象变量?
- angular - ionic 4 *ngFor 在任何项目中都不起作用
- c# - 我似乎无法从 .txt 文件中的不同元素中提取周长和面积方法
- flutter - 如何初始化一个方法,以便我可以在另一个方法中使用它作为参数?
- batch-file - 如何在cmd中获取小写的当前文件夹名称作为变量?
- jquery - 为我的网站存储暗模式偏好
- android - 如何在联系人详细信息中获取电子邮件地址
- python - 如何在ndarray中明智地计算特定元素的行/列?
- javascript - 谷歌地图API中有两个不同图像的两个标记