• Django 视图


    一个视图函数(类)简称视图,是一个简单的Python 函数(类),包含的是业务逻辑,它接受Web请求并且返回Web响应。
    一般放在 project 或 APP 的 views.py 中

    获取用户请求数据

    request.environ 中封装了所有用户请求信息

    request.GET
    request.POST
    request.FILES      # 获取上传文件
    request.COOKIES    # 获取COOKIES
    request.path_info    # 获取当前请求URL
    request.environ['HTTP_USER_AGENT']    # 获取用户设备信息
    

    示例:
    html:

    <form action="/login.html" method="post">
        <input type="text" name="user_name" placeholder="User Name" required/>
        <input type="password" name="password" placeholder="Password" required/>
    </form>
    

    views.py:

    if request.method == 'POST':
        username = request.POST.get('user_name')
        password = request.POST.get('password')
    

    checkbox等多选的内容(列表)

    request.POST.getlist()
    

    示例:
    html:

    <form method="post" action="/test/">
        <p>1:<input type="checkbox" name="choose" value="1"></p>
        <p>2:<input type="checkbox" name="choose" value="2"></p>
        <p>3:<input type="checkbox" name="choose" value="3"></p>
        <input type="submit">
    </form>
    

    views.py:

    if request.method == 'POST':
        res = request.POST.getlist('gender', None)
        print(res)
    

    输出结果:
    ['2', '3']

    上传文件

    示例:
    html:

    <form method="post" action="/test/" enctype="multipart/form-data">
        <input type="file" name="fname">
        <input type="submit">
    </form>
    

    views.py

    import os
    
    if request.method == 'POST':
        file = request.FILES.get('fname', None)		# 获取上传的文件
        print(file.name, file.size)
        file_path = os.path.join('upload', file.name)	# 找到储存文件的位置
        f = open(file_path, 'wb')	# 创建空文件
        for i in file.chunks():		# 循环读取文件
            f.write(i)	# 循环写入
        f.close()
    

    之后文件就上传到了项目目录下 upload 中

    FBV & CBV

    function base view
    class base view

    url.py:

    from django.urls import path
    
    urlpatterns = [
        path('login/', views.login),
        path('home/', views.Home.as_view()),
    ]
    

    views.py:

    from django.shortcuts import HttpResponse
    from django.views import View
    
    def login(request):
    	if request.method == 'GET':
    		return HttpResponse(get)
        if request.method == 'POST':
        	return HttpResponse(post)
    
    
    class Home(View):
        # 先执行的函数
        def dispatch(self, request, *args, **kwargs):
            # 获取请求之前
            print('before')
            # 调用父类中的dispatch,获取请求
            result = super(Home, self).dispatch(request, *args, **kwargs)
            # 获取请求之后
            print('after')
            return result
    
        @staticmethod
        def get(self, request):
        	print(request.method)
            return HttpResponse(get)
    
        @staticmethod
        def post(self, request):
            print(request.method)
            return HttpResponse(post)
    
  • 相关阅读:
    VB.NET中vbcr 是回车、vbcrlf 是回车和换行的结合、vblf 是换行
    COM组件简介
    【转】ACE编程小结
    socket基础实例(一个服务端对应一个客户端情形)
    服务器中判断客户端socket断开连接的方法
    阻塞、非阻塞的概念和select函数的阻塞功能
    socket基础函数(2)
    线程初级基础(一)
    给程序员的五点建议--如何成为编程高手并以此创业
    Linux下常用软件
  • 原文地址:https://www.cnblogs.com/dbf-/p/10883935.html
Copyright © 2020-2023  润新知