视图函数用于接收request之后返回response
请求方式有:get和post
get用于创建数据,post用于更新数据
get是明文传输,长度是被限制的,有历史记录
例如连接为
http://127.0.0.1:8000/myview/?page=10&id=1001
在views.py文件里编写函数
def MyView(request):
page = request.GET.get('page') #request.GET 以字典的形式
id = request.GET.get('id')
return HttpResponse(f'这是一个视图,当前的页数为{page},当前id为{id}',)
在urls.py里配置路由
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('myview/',views.MyView),
]
1.3 POST请求处理
post没有长度限制,比get安全,并且不会被留下浏览记录
过程如下
views.py文件里一个返回带有表单页面的函数
def IndexView(request):
return render(request,'index.html')
在templates文件夹里新建index.html文件,写表单
Title
表单页面
views.py里写post的请求处理
def MyView2(request):
user = request.POST.get('user')
pwd = request.POST.get('pwd')
return HttpResponse(f'这是第二个视图,账号:{user},密码:{pwd}')
1.4 POST请求处理表单多值提交
也就是复选框,提交的是value。用getlist,相当于all()
2.视图响应 2.1 HttpResponse(原始)from django.http import HttpResponse
def MyView(request):
#1.返回一个响应
return HttpResponse('这是一个视图') #返回的是一个字符串
2.2 JsonResponse(继承HttpResponse)
from django.http import JsonResponse
def MyView(request):
content = {
'name' : 'Tom',
'age' : 18
}
return JsonResponse(content) #返回json数据
2.3 Render(继承HttpResponse)
from django.shortcuts import render
def IndexView(request):
content = {
'name' : 'Rose',
'age' : 18
}
return render(request,'index.html',content)
接收请求(request),返回一个页面(index.html),及需要在页面上渲染的数据(centent)默认为字典
2.4Redirect 重定向(跳转)
from django.shortcuts import redirect
def MyView3(request):
print('重定向')
#跳转到另一个页面
return redirect('/myview/') #路径前必须加‘/’
3.CBV类试图
3.1 FBV,CBV的概念
CBV类试图
CBV:就是在类里处理请求
from django.http import HttpResponse
from django.views import View
class CbvView(View):
def get(self,request):
return HttpResponse('这是类视图中的get方法')
def post(self,request):
return HttpResponse('这是类视图中的post方法')
def put(self,request):
return HttpResponse('这是类视图中的put方法')
def delete(self,request):
return HttpResponse('这是类视图中的delete方法')
FBV函数视图
FBV:在函数里处理请求
from django.http import HttpResponse
# FBV 函数试图
# 解析GET请求
def MyView(request):
page = request.GET.get('page')
id = request.GET.get('id')
return HttpResponse(f'这是一个视图,当前的页数为{page},当前id为{id}',)
3.2 CBV的路由映射方式
使用as_view()的映射方式
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('cbv/',views.CbvView.as_view())
]
总结
常用的命令
创建Django项目(在命令框):django-admin startproject 项目名
创建子应用(在项目终端):python manage.py startapp 子应用名
启动项目(在项目终端):python manage.py runserver
生成迁移(在项目终端):python manage.py makemigrations
执行迁移(在项目终端):python manage.py migrate
创建超级用户(在项目终端):python manage.py createsuperuser
展示所有库:show databases;
创建数据库:create database 库名;
使用库: use 库名;
删除库:drop database 库名;
展示库里所有表:show tables;
查询表里的内容:select * from 表名;
有两种解决方法:
第一种:在表单里边加上***{% csrf_token %}***
第二种方法:在settings.py文件里找到MIDDLEWARE注释掉中间件这行代码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)