登录Ubuntu虚拟机,进入虚拟环境创建django工程,在工程内创建应用,命令如下;workon djangotestdjango-admin startproject djviewdecd djviewdepython manage.py startapp book
在工程的配置文件settings.py注册应用,添加本机ip到allowed_hosts,注释掉中间件 'django.middleware.csrf.CsrfViewMiddleware'cd djviewdevi settings.py修改部分的settings.py文件如下:ALLOWED_HOSTS = ['192.168.128.128']# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'book.apps.BookConfig',]MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',]
在book应用的views.py编写一个类视图,和一个装饰器函数cd ../bookvi views.pyviews.py文件如下:from django.shortcuts import renderfrom django.views.generic import Viewfrom django.http import HttpResponse# Create your views here.def mydecorater(fun): def wrapper(request,*args,**kwargs): print (request.method) return fun(request,*args,**kwargs) return wrapperclass index(View): def get(self,request): return HttpResponse('get page') def post(self,request): return HttpResponse('post page')解释一下:装饰器mydecorater用来装饰urls.py中的as_view函数,相当于这个函数在as_view返回前做了额外的操作。
在工程的urls.py文件include应用的urlscd ../djviewdevi urls.pyurls.py文件如下:from django.conf.urls import url,includefrom django.contrib import adminurlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^book/', include('book.urls')),]
在book应用创建urls.py文件,并编写到index类视图的url,注意要加装饰器cd ../bookvi urls.pyurls.py文件如下:from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r'^index/', views.mydecorater(views.index.as_view())),]
在本机ip和端口8000上 运行django服务器cd ..python manage.py runserver 192.168.128.128:8000
在局域网另一台电脑使用POSTMAN,发送get请求,网址如下:http://192.168.128.128:8000/book/index/返回:get pageUbuntu终端打印出:GET
在局域网另一台电脑使用POSTMAN,发送post请求,网址如下:http://192.168.128.128:8000/book/index/返回:post pageUbuntu终端打印出:POST装饰器成功
装饰器还有其他方法,这是最简单的一种