一些问题:
在实际应用中,如果所有的视图函数都写在外部的urls中将会是很乱的。不便于管理。所以我们允许在每一个app中建立一个urls文件。比如,在构建一个网站的时候,我们往往需要做一个前端管理以及后端管理,所以我们需要建立两个app,这个以后会涉及到的思路。
如何在一个使得app里面的url与外部url进行互动?
这时候我们就会使用到include
函数。
例子:
- 首先我们建立一个项目名为
myproject2
,建立两个app,一个名为app1
,一个名为app2
- 在两个app建立urls文件中填入以下代码:
app1/urls.py:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path("index/",views.index),
path("logic/",views.logic)
]
app1/views.py:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("这是app1的首页")
def logic(request):
return HttpResponse("这是app1登录页面")
app2/urls.py:
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path("index/",views.index),
path("logic/",views.logic)
]
app2/views.py:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("这是app2的首页")
def logic(request):
return HttpResponse("这是app2登录页面")
-
这里已经建立了视图与url的映射关系,但是,还没有建立url与url的关系。
-
也很简单:在外部(主要的)views.py写入以下代码:
from django.contrib import admin
from django.urls import path,include
from django.http import HttpResponse
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/',include("app1.urls")),
path('app2/',include("app2.urls"))
]
- 这时候我们就会得到下面的结果:
- 但是当我们访问
http://127.0.0.1:8000
时,很明显会发生错误,所以我们需要每当访问http://127.0.0.1:8000
时,就跳转到app1的登录页面。这部分内容下次再说。