Django学习小结(Windows平台)

Django学习小结(Windows平台)

目录

Django学习小结(Windows平台)

1.安装Django与启动Django项目

1)安装Django:pip install Django

2)启动Django项目      

2.Django项目的项目结构

3.Django网站中,传递参数与接收参数

1)通过request.GET[]

 2)通过这种方式获取

4.文件上传,下载

1)上传

2)下载


1.安装Django与启动Django项目

     1)安装Django:pip install Django

     2)启动Django项目      

            1.cmd去到python安装路径或虚拟环境的Script文件夹中

            2.执行django-admin.py startproject proj_name

            3.执行python manage.py runserver 0.0.0.0:8080

            4.浏览器输入localhost:8080见到如下画面,即表示安装成功

                 

2.Django项目的项目结构

1.与项目同的app(mysite)主要存放请求路径分发的功能

2.其他文件夹(calc,learn)作为一个独立的app模块,与整个项目协同合作

3.Django网站中,传递参数与接收参数

1)通过request.GET[]

    1.django_project_name/app_name/views.py(app_name项目其他app,创建项目app:cmd进入到django根目录,python startapp app_name创建)

from django.http import HttpResponse

#只需要一个request的参数
def get_parm(request):
    parm1 = request.GET['parm_name1']
    parm2 = request.GET['parm_name2']
    return HttpResponse('从网页上获取的参数是:{0},{1}'.format(parm1, parm2))
    

    2.django_project_name/django_project_name/urls.py(与项目同名的文件夹下)

from calc import get_parm

urlpatterns = [
    #对应上面的get_param()方法
    path('app_name/get_parm', get_parm),
]

     3.url地址

 2)通过<data_type:parm_name>这种方式获取

      1.djangoProjectName/appName/views.py(appName项目其他app,创建项目app:cmd进入到django根目录,python startapp app_name创建)

from django.http import HttpResponse

def get_parm2(request, parm1, parm2):
    return HttpResponse('从网页上获取的参数是:{0},{1}'.format(parm1, parm2))

       2.django_project_name/django_project_name/urls.py(与项目同名的文件夹下)

urlpatterns = [
    #对应上面的get_parm2()方法
    path('app_name/get_parm2/<str:parm1>/<str:parm2>', get_parm2),
]

       3.url地址

4.文件上传,下载

1)上传

 a.web页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Office Index</title>
</head>
<body>
    <h1>Index</h1>
    <ol>
        <li>
            <form action="file_upload" method="post" enctype="multipart/form-data">
                {% csrf_token %}
                <input type="file" name="file">
                <input type="submit" value="上传">
            </form>
        </li>
    </ol>
</body>
</html>

  b.views.py中的方法:

from django.http import HttpResponse
from django.shortcuts import render
from office.utils.file_utils import *

def file_upload(request):
    """
    html页面实现文件上传到服务器,可以是服务器中的绝对路径
    """
    # get(file')是指<input>中name的值
    file = request.FILES.get('file')
    upload_flag = file_upload(file, file.name, 'D:\\FileUploadLocation\\')
    
    # 上传结果页面,可以下载刚刚上传的文件
    rst_page = 'rst.html'

    if upload_flag:
        # 文件处理(忽略)
        dict_data = {
            'info': '文件上传成功!',
            'file_name': file_name
        }
        return render(request, rst_page, dict_data)
    else:
        dict_data = {
            'info': '文件上传失败!',
        }
        return render(request, rst_page, dict_data)

 c.file_utils中的方法

def file_upload(file, file_name, file_loc):
    """
    文件上传到指定路径
    """
    try:
        with open(file_loc + file_name, 'wb+') as destination:
            for chunk in file.chunks():
                destination.write(chunk)
        return True
    except IOError as e:
        print(e)
        return False

2)下载

 a.web(rst.html)页面:

<!DOCTYPE html>
<html>
<head>
    <title>上传结果</title>
</head>
<body>
    <h1>上传结果:{{ info }}</h1>
    <p>
        <a href="file_download?file_path={{ file_name }}">
            文件下载:{{ file_name }}</a>
    </p>
</body>
</html>

 b.views.py中的方法

from django.http import FileResponse

def file_download(request):
    """
    下载def file_upload(request)方法中上传的文件
    """
    #def file_upload(request)上传文件的绝对路径
    file_loc = 'D:\\FileUploadLocation\\'
    #获取文件域数据
    upload_file_name = request.GET['file_path']
    # 下载文件的文件名处理,可以根据自己的情况修改
    page_file_name = str(upload_file_name).split('_')[2]
    file_loc += str(upload_file_name)

    file = open(file_loc, 'rb')
    response = FileResponse(file)
    response['Content-Type'] = 'application/octet-stream'
    # 防止中文文件名不显示
    response['Content-Disposition'] = 
        'attachment;filename="{0}"'.format(escape_uri_path(page_file_name))
    return response

3)urls.py中的内容

from django.urls import path
from .views import file_upload, file_download

urlpatterns = [
    path('file_upload', file_upload),
    path('file_download', file_download),
]

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值