Day03-视图层

Day03-视图层,第1张

1. 视图请求 1.1 常见的请求方式及特点

视图函数用于接收request之后返回response
请求方式有:get和post
get用于创建数据,post用于更新数据

1.2 GET请求处理

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


    表单页面
    
#路径前要加‘/’ {% csrf_token %} 账号: 密码:

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

回顾mysql常用命令

展示所有库:show databases;
创建数据库:create database 库名;
使用库: use 库名;
删除库:drop database 库名;
展示库里所有表:show tables;
查询表里的内容:select * from 表名;

错误

解决方法

有两种解决方法:
第一种:在表单里边加上***{% csrf_token %}***

第二种方法:在settings.py文件里找到MIDDLEWARE注释掉中间件这行代码

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/738446.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存