这对你们来说应该是一个容易解决的问题:
我刚开始使用Django,我正在做一些路由。这是项目根目录中的urls.py
:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('dashboard.urls')),
]
这是我dashboard app
中的路由:
urlpatterns = [
path('dashboard', views.index, name='index'),
path('', views.index, name='index'),
]
现在让我们说如果他们转到网站的根目录,我希望我的用户被重定向到/dashboard
。因此,我会使用''
作为根目录urls.py
中的路由,然后让所有人从/dashboard
中的urls.py
发送到dashboard app
。但是当我这样做时,我收到以下警告:
?: (urls.W002) Your URL pattern '/dashboard' [name='index'] has a route beginning with a '/'. Remove this slash as it is unnecessary. If this pattern is targeted in an include(), ensure the include() pattern has a trailing '/'.
因此,我尝试使用'/'
代替''
,但由于自动从网址中删除了/
,因此该网址与该模式不匹配。我应该忽略/静音这个警告还是有另一种方法可以解决这个问题?
这段代码完美无缺但之前给了我一个警告:
urlpatterns = [
path('/dashboard', views.index, name='index'),
path('', views.index, name='index'),
]
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('dashboard.urls'))
]
答案 0 :(得分:1)
您可以使用RedirectView
从/
重定向到/dashboard/
。然后在包含信息中心网址时使用'dashboard'
。
urlpatterns = [
path('admin/', admin.site.urls),
path('', RedirectView.as_view(pattern_name='dashboard:index')
path('dashboard/', include('dashboard.urls')),
]
然后,您可以从'dashboard'
中的路径中移除dashboard/urls.py
,因为它已在include()
中。
app_name = 'dashboard'
urlpatterns = [
path('', views.index, name='index'),
]
我已添加app_name='dashboard'
以匹配上面pattern_name='dashboard:index'
中使用的命名空间。
请注意,Django项目通常使用带有斜杠的URL,例如: /dashboard/
代替dashboard
。
如果您真的想使用/dashboard
之类的网址而不使用尾部斜杠,那么include应为
path('dashboard', include('dashboard.urls')),
如果您这样做,我建议您在设置中将APPEND_SLASH
设置为False
。
答案 1 :(得分:-1)
您可以尝试这样的事情:
from django.conf import settings
from django.conf.urls import include, url
from django.contrib import admin
from django.views.generic import RedirectView
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^contacts/', include('appname.contacts.urls')),
url(r'^comments/', include('appname.urls')),
url(r'^subscriptions/', include('appname.partner.urls')),
url(r'^', RedirectView.as_view(url="/admin/"))
]
这是我在我的项目中所做的,所以每当用户转到127.0.0.1:8000
时,它都会重定向到/admin