-
打开blog项目,在项目下创建一个views.py文件,我们可以在里面写一些我们要实现的业务逻辑.
-
编写views.py里的代码.
from django.http import HttpResponse def index(request): return HttpResponse('index')
-
配置路由.
#打开urls.py文件,在urlpatterns里添加一行 from . import views urlpatterns = [ # 第一个参数是在浏览器地址栏里要添加的,第二个参数是所要处理它的函数 path('index/', views.index), ]
-
启动项目.在地址栏输入’http://127.0.0.1:8000/index/’.
python manage.py runserver
-
我们一般不在主应用里写后台逻辑,一般创建多个子应用,每个子应用实现不同的功能.
# 创建子应用 python manage.py startapp 子应用名
这里我们创建一个viewapp的子应用.
python manage.py startapp viewapp
-
将子应用在项目settings.py文件里面注册.
-
将子应用的路由添加到项目urls.py文件中.
-
在子应用视图里编写index函数.
from django.http import HttpResponse def index(request): return HttpResponse('子应用index')
-
配置子应用路由urls.py文件.
from django.urls import path from viewapp import views urlpatterns = [ path('index/', views.index), ]
-
启动项目.在浏览器地址栏输入127.0.0.1:8000/view/index/
-
获取get,post,put,delete请求所传递过来的参数.(子应用views.py文件)
import json # get请求 def t_get(request): name = request.GET.get('name') age = request.GET.get('age') print(name, age) return HttpResponse('get请求') # post请求 def t_post(request): name = request.POST.get('name') age = request.POST.get('age') print(name, age) reutrn HttpResposne('post请求') # put请求 def t_put(request): response = request.body res = json.loads(response) print(res) return HttpResponse('put请求') # delete请求 def t_delete(request): response = request.body res = json.loads(response) print(res) return HttpResponse('delete请求')
-
get请求: 127.0.0.1:8000/view/get/?name=zhangsan&age=40&name=lisi
-
post请求: 通过postman软件来发送, 127.0.0.1:8000/view/post/ (如果没有的话,可以手写一个表单来发送post请求) 注:django框架默认开启了CSRF防护,目的是防止服务器遭受恶意攻击.可以去settings.py中将其注释掉.
-
put请求: 这个请求发送的是json格式的数据,
-
delete请求:同put请求
-
-
通过post请求获取用户上传的文件.
# 在子应用urls.py文件中加上path('file/', views.file), import datetime import os from blog.settings import BASE_DIR def files(request): # 得到的是file对象 file = request.FILES.get('img') # 取出file对象的name属性 name = file.name # 通过用户上传文件时间拼接得到文件名 filename = datetime.datetime.now().strftime('%y%m%d_%H%M%S') + os.path.splitext(name)[-1] filepath = os.path.join(BASE_DIR, 'uploads', filename) # 通过二进制写入 with open(filepath, 'ab') as f: # 为防止文件过大, 将文件切割多部份写入 for chunk in file.chunks(): f.write(chunk) return HttpResponse('file写入')
-
通过get请求获取url中的参数.
# 例如url = r'127.0.0.1:8000/view/get/2/?name=zhangsan&age=10',如果要取得数字2应该怎么写? # 其实只需在urls.py文件中设置正则匹配,然后起个别名,路由对应的函数就可以获取得到这个参数啦. # django为1.11版本url支持正则 urlpatterns = [ url(r'^get/(?P<page>\d/)', views.t_get), ] # django为2.2版本path不支持正则,要导入re_path from django.urls import re_path urlpatterns = [ re_path(r'^get/(?P<page>d)/', views.t_get), ]
Django框架学习(二)
最新推荐文章于 2024-10-07 22:10:56 发布