首页 > 其他 > 详细

Django 视图

时间:2019-05-17 22:13:05      阅读:130      评论:0      收藏:0      [点我收藏+]

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

获取用户请求数据

request.GET
request.POST
request.FILES
request.COOKIES

示例:
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)     # 获取上传的文件
    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)

Django 视图

原文:https://www.cnblogs.com/dbf-/p/10883935.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!