Django 2.0:Url homepage/index 的路径

Django 2.0: Url path to homepage/index

我正在尝试设置我的 Django 主页,链接到我网站的根目录:即 http://127.0.0.1:8000/index/ 但是,当 Django 正在搜索 myapp 作为主页时,我不断收到错误消息:http://127.0.0.1:8000/myapp/.我只想登陆 url 中带有 "index" 的主页,而不是 "myapp/"

错误如下:

Using the URLconf defined in Main.urls, Django tried these URL patterns, in this order:

admin/
[name='index']
[name='myapp_index']
publications/ [name='publications']
^static\/(?P<path>.*)$
The current path, myapp/, didn't match any of these.

Views.py

def index(request):
    return render(request, 'index.html')

Main/urls

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

myapp/urls

from django.urls import path
from logbook import views

urlpatterns = [
    path('', views.index, name='index'),
    path('', views.myapp_index, name='myapp_index'),
    path('publications/', views.publications, name='publications'),
]

现在,如果我将 Main/urls.py 中的路径更改为 path('myapp/', include('myapp.urls')), 我会登陆相应的主页,除了,我更希望那里是 "index/" 列在 URL 而不是 "myapp/".

我可能遗漏了一些非常简单的东西。这就是我认为是我的 MWE,很高兴添加更多。

这应该是主要的urls.py

path('', views.index, name='index')

而不是my_app/urls.py

path('myapp/', include('myapp.urls'))
path('index/', include('myapp.urls'))

这可能会得到想要的结果。

您是否尝试过以下操作:

Main/urls

 ...
 path(r'^', include('myapp.urls')),
 ...

myapp/urls

 ...
 path(r'^$', views.index, name='index'),
 # path('', views.myapp_index, name='myapp_index'), ## REMOVE THIS ROW ##
 ...

首先你必须在myapp.urls中选择以下行之一并删除其他

您不能为一个 url 模式设置两个视图

path('', views.index, name='index'),
path('', views.myapp_index, name='myapp_index'),

你有两种获取索引/作为主要方法的解决方案url

1.change Main.urls 如下所示

path('', include('myapp.urls')),

path('index/', include('myapp.urls')),

2.change myapp.urls 如下所示

path('', views.index, name='index'),

path('index/', views.index, name='index'),

你实际上更改了 urls 的名称,在 python 代码中使用而不是 urls

的路径

编辑 你是说 index/ 像下面这样吗?

www.example.com/

所以你必须像上面那样做,但是删除 "index/"

所以你不能像下面那样做:

改变Main.urls如下

path('', include('myapp.urls')),

path('^$', include('myapp.urls')),

改变myapp.urls如下

path('', views.index, name='index'),

path('^$', views.index, name='index'),

这对我有用 (Django2) - 指向 'static_pages' 应用程序 views.py 中的索引操作作为主页:

主要urls.py:

 from django.contrib import admin
 from django.urls import path, include

 urlpatterns = [
     path('admin/', admin.site.urls),
     path('', include('static_pages.urls')), #included urls from static_pages app
 ]

static_pages/urls.py:

 from django.contrib import admin
 from django.urls import path
 from . import views

 urlpatterns = [
      path('', views.index, name="index"),
 ]

static_pages/views.py

 from django.shortcuts import render
 from django.http import HttpResponse

 def index(request):
     return HttpResponse("First Django2 Message!")

请注意,'static_pages' 应用已添加到 settings.py 中的 INSTALLED_APPS。

现在,调用 http://127.0.0.1:8000/ 我得到了:"First Django2 Message!"。

我遇到了同样的问题,我正在绞尽脑汁寻找解决方案。

解决方法是清除浏览器的缓存和历史记录 我意识到这是因为当我尝试使用隐身模式时效果很好!