我坚持使用Django项目,我尝试添加另一个名为login的应用程序来创建登录页面但由于某种原因,该页面只是重定向到主页,除了管理页面
例如:127.0.0.1:8000将转到主页,但127.0.0.1:8000/login也会显示主页,即使我将另一个模板链接到主页。
这是我的代码:
main urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('portal.urls')),
url(r'^login/', include('login.urls')),
]
登录urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^login/', views.index, name="login"),
]
登录views.py
from django.shortcuts import render
def index(request):
return render(request, 'login/login.html')
portal urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^', views.index, name="portal"),
]
答案 0 :(得分:4)
您不会终止门户网站索引网址,因此它会匹配所有内容。它应该是:
url(r'^$', views.index, name="portal"),
答案 1 :(得分:2)
我在这里看到两个问题:
^
匹配任何内容,因此您应将其更改为^$
。 include
时,include
匹配后的其余路径将传递给包含的模式。您还需要在登录urls.py中使用^$
。 答案 2 :(得分:0)
此外,如果正则表达式是登录/ $,但您输入http:// server / login,那么它将不会匹配http://server/login/。 您可以尝试将正则表达式更改为登录/ * $,它将匹配网址末尾的任意数字(甚至为零)。
所以http:// server / login,http:// server / login /,http:// server / login ////都匹配。
或者如果您想要具体,登录/ {0,1} $可能会起作用(尽管该正则表达式语法来自内存!)