在django中的urls.py中配置url时,注释中有三种方法:
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
其实已经说的很明白了,下面针对这三种情况进行举例详解:
方法1:函数
在my_app/views.py中,定义一个函数:
def login(request):
return render(request, 'test.html', {})
在urls.py中,配置:
from my_app import views
urlpatterns = [
url(r'^test/', views.login, name='test'),
]
方法2:类
在my_app/views.py中,定义一个类:
from django.views import View
class LoginView(View):
def get(self, request):
return render(request, 'test.html', {})
在urls.py中,配置:
from my_app.views import LoginView
urlpatterns = [
url(r'^login/', LoginView.as_view(), name='login'),
]
方法3:include
该方法是针对有多个app的情况,在该app下新建一个urls.py,从而将同一域名下的url放到一起,便于管理。
views.py中如同第二种方法一样。
在总的urls.py中:
urlpatterns = [
url(r'^test/', include('my_app.url', namespace='test'),
]
在该app下的urls.py中,写法与第二种一样。
只不过在模板中跳转到该连接时,url需要写成test:login
形式。